diff options
author | Raymond Hettinger <python@rcn.com> | 2011-04-12 00:27:42 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2011-04-12 00:27:42 (GMT) |
commit | e4579c33802f555594678ead8d4a163f033e8a54 (patch) | |
tree | 57d153ba88b453f79b616266f9781242dd7014fa | |
parent | 16f98b76584b39fd8bd3c724e5b1cbf2a45ecd33 (diff) | |
download | cpython-e4579c33802f555594678ead8d4a163f033e8a54.zip cpython-e4579c33802f555594678ead8d4a163f033e8a54.tar.gz cpython-e4579c33802f555594678ead8d4a163f033e8a54.tar.bz2 |
Issue #11830: Remove unnecessary introspection code in the decimal module.
It was causing a failed import in the Turkish locale where the locale
sensitive str.upper() method caused a name mismatch.
-rw-r--r-- | Lib/decimal.py | 25 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
2 files changed, 15 insertions, 14 deletions
diff --git a/Lib/decimal.py b/Lib/decimal.py index 5e2a750..220db1c 100644 --- a/Lib/decimal.py +++ b/Lib/decimal.py @@ -1723,8 +1723,6 @@ class Decimal(object): # here self was representable to begin with; return unchanged return Decimal(self) - _pick_rounding_function = {} - # for each of the rounding functions below: # self is a finite, nonzero Decimal # prec is an integer satisfying 0 <= prec < len(self._int) @@ -1791,6 +1789,17 @@ class Decimal(object): else: return -self._round_down(prec) + _pick_rounding_function = dict( + ROUND_DOWN = '_round_down', + ROUND_UP = '_round_up', + ROUND_HALF_UP = '_round_half_up', + ROUND_HALF_DOWN = '_round_half_down', + ROUND_HALF_EVEN = '_round_half_even', + ROUND_CEILING = '_round_ceiling', + ROUND_FLOOR = '_round_floor', + ROUND_05UP = '_round_05up', + ) + def fma(self, other, third, context=None): """Fused multiply-add. @@ -3708,18 +3717,6 @@ _numbers.Number.register(Decimal) ##### Context class ####################################################### - -# get rounding method function: -rounding_functions = [name for name in Decimal.__dict__.keys() - if name.startswith('_round_')] -for name in rounding_functions: - # name is like _round_half_even, goes to the global ROUND_HALF_EVEN value. - globalname = name[1:].upper() - val = globals()[globalname] - Decimal._pick_rounding_function[val] = name - -del name, val, globalname, rounding_functions - class _ContextManager(object): """Context manager class to support localcontext(). @@ -57,6 +57,10 @@ Library - Issue #4877: Fix a segfault in xml.parsers.expat while attempting to parse a closed file. +- Issue #11830: Remove unnecessary introspection code in the decimal module. + It was causing a failed import in the Turkish locale where the locale + sensitive str.upper() method caused a name mismatch. + - Issue #8428: Fix a race condition in multiprocessing.Pool when terminating worker processes: new processes would be spawned while the pool is being shut down. Patch by Charles-François Natali. |