From: Raymond Hettinger Date: Tue, 12 Apr 2011 00:27:42 +0000 (-0700) Subject: Issue #11830: Remove unnecessary introspection code in the decimal module. X-Git-Tag: v2.7.2rc1~170 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e4579c33802f555594678ead8d4a163f033e8a54;p=python 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. --- diff --git a/Lib/decimal.py b/Lib/decimal.py index 5e2a750924..220db1c5bf 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 c4dd780db8..63f4b485b4 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.