[PATCH 6 of 8 V2] util: don't use mutable default argument value

Gregory Szorc gregory.szorc at gmail.com
Mon Mar 13 00:57:38 EDT 2017


# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1489380872 25200
#      Sun Mar 12 21:54:32 2017 -0700
# Node ID e379f89d119b7b1cd40c313693912b5fdc4a3360
# Parent  f72bef9154d773c05fa8b2ae30d7db55861fa639
util: don't use mutable default argument value

I don't think this is any tight loops and we'd need to worry about
PyObject creation overhead. Also, I'm pretty sure strptime()
will be much slower than PyObject creation (date parsing is
surprisingly slow).

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -1827,9 +1827,11 @@ def parsetimezone(s):
 
     return None, s
 
-def strdate(string, format, defaults=[]):
+def strdate(string, format, defaults=None):
     """parse a localized time string and return a (unixtime, offset) tuple.
     if the string cannot be parsed, ValueError is raised."""
+    defaults = defaults or []
+
     # NOTE: unixtime = localunixtime + offset
     offset, date = parsetimezone(string)
 


More information about the Mercurial-devel mailing list