summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2011-04-12 00:27:42 (GMT)
committerRaymond Hettinger <python@rcn.com>2011-04-12 00:27:42 (GMT)
commite4579c33802f555594678ead8d4a163f033e8a54 (patch)
tree57d153ba88b453f79b616266f9781242dd7014fa
parent16f98b76584b39fd8bd3c724e5b1cbf2a45ecd33 (diff)
downloadcpython-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.py25
-rw-r--r--Misc/NEWS4
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().
diff --git a/Misc/NEWS b/Misc/NEWS
index c4dd780..63f4b48 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.