# HG changeset patch # User Pierre-Yves David # Date 1443080055 25200 # Node ID b80b2ee71a08d00ec4008f3131bdf3c72e4ec2ba # Parent e9a35411bbbcf7c09ab002fca424ce982d8b3dc5 check-code: forbid mutable value for default argument default value are common to all call. Using mutable value is a classical source of bug in Python. We forbid it. The regexp (Courtesy of Matt Mackall) is only catching such value on the first line of a definition, but that will be good enough for now. diff -r e9a35411bbbc -r b80b2ee71a08 contrib/check-code.py --- a/contrib/check-code.py Thu Sep 24 00:54:30 2015 -0700 +++ b/contrib/check-code.py Thu Sep 24 00:34:15 2015 -0700 @@ -291,6 +291,8 @@ (r'os\.path\.join\(.*, *(""|\'\')\)', "use pathutil.normasprefix(path) instead of os.path.join(path, '')"), (r'\s0[0-7]+\b', 'legacy octal syntax; use "0o" prefix instead of "0"'), + # XXX only catch mutable arguments on the first line of the definition + (r'def.*[( ]\w+=\{\}', "don't use mutable default arguments"), ], # warnings [