Mercurial > public > mercurial-scm > hg
comparison mercurial/util.py @ 26311:60dd8e3977f0
util: avoid mutable default arguments
I almost introduced a bug around this code by accidentally mutating a default
argument. There's no reason for these to exist.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Tue, 22 Sep 2015 16:55:18 -0700 |
parents | eca468b8fae4 |
children | 127b59787fd5 |
comparison
equal
deleted
inserted
replaced
26310:61efe9ef6ad4 | 26311:60dd8e3977f0 |
---|---|
728 def _sethgexecutable(path): | 728 def _sethgexecutable(path): |
729 """set location of the 'hg' executable""" | 729 """set location of the 'hg' executable""" |
730 global _hgexecutable | 730 global _hgexecutable |
731 _hgexecutable = path | 731 _hgexecutable = path |
732 | 732 |
733 def system(cmd, environ={}, cwd=None, onerr=None, errprefix=None, out=None): | 733 def system(cmd, environ=None, cwd=None, onerr=None, errprefix=None, out=None): |
734 '''enhanced shell command execution. | 734 '''enhanced shell command execution. |
735 run with environment maybe modified, maybe in different dir. | 735 run with environment maybe modified, maybe in different dir. |
736 | 736 |
737 if command fails and onerr is None, return status, else raise onerr | 737 if command fails and onerr is None, return status, else raise onerr |
738 object as exception. | 738 object as exception. |
739 | 739 |
740 if out is specified, it is assumed to be a file-like object that has a | 740 if out is specified, it is assumed to be a file-like object that has a |
741 write() method. stdout and stderr will be redirected to out.''' | 741 write() method. stdout and stderr will be redirected to out.''' |
742 if environ is None: | |
743 environ = {} | |
742 try: | 744 try: |
743 sys.stdout.flush() | 745 sys.stdout.flush() |
744 except Exception: | 746 except Exception: |
745 pass | 747 pass |
746 def py2shell(val): | 748 def py2shell(val): |
1412 offset = unixtime - localunixtime | 1414 offset = unixtime - localunixtime |
1413 else: | 1415 else: |
1414 unixtime = localunixtime + offset | 1416 unixtime = localunixtime + offset |
1415 return unixtime, offset | 1417 return unixtime, offset |
1416 | 1418 |
1417 def parsedate(date, formats=None, bias={}): | 1419 def parsedate(date, formats=None, bias=None): |
1418 """parse a localized date/time and return a (unixtime, offset) tuple. | 1420 """parse a localized date/time and return a (unixtime, offset) tuple. |
1419 | 1421 |
1420 The date may be a "unixtime offset" string or in one of the specified | 1422 The date may be a "unixtime offset" string or in one of the specified |
1421 formats. If the date already is a (unixtime, offset) tuple, it is returned. | 1423 formats. If the date already is a (unixtime, offset) tuple, it is returned. |
1422 | 1424 |
1432 >>> (strnow - now) < 1 | 1434 >>> (strnow - now) < 1 |
1433 True | 1435 True |
1434 >>> tz == strtz | 1436 >>> tz == strtz |
1435 True | 1437 True |
1436 """ | 1438 """ |
1439 if bias is None: | |
1440 bias = {} | |
1437 if not date: | 1441 if not date: |
1438 return 0, 0 | 1442 return 0, 0 |
1439 if isinstance(date, tuple) and len(date) == 2: | 1443 if isinstance(date, tuple) and len(date) == 2: |
1440 return date | 1444 return date |
1441 if not formats: | 1445 if not formats: |