* Hide a loop induction variable that was inadvertantly being picked up

by the locals() call in the context constructor.

* Remove unnecessary properties for int, exp, and sign which duplicated
  information returned by as_tuple().
This commit is contained in:
Raymond Hettinger 2004-07-14 16:35:30 +00:00
parent fed52963fc
commit b91af521fd
2 changed files with 2 additions and 39 deletions

View File

@ -2054,17 +2054,6 @@ class Decimal(object):
except TypeError: except TypeError:
return 0 return 0
#properties to immutability-near feature
def _get_sign(self):
return self._sign
def _get_int(self):
return self._int
def _get_exp(self):
return self._exp
sign = property(_get_sign)
int = property(_get_int)
exp = property(_get_exp)
# support for pickling, copy, and deepcopy # support for pickling, copy, and deepcopy
def __reduce__(self): def __reduce__(self):
return (self.__class__, (str(self),)) return (self.__class__, (str(self),))
@ -2120,8 +2109,10 @@ class Context(object):
_ignored_flags=[]): _ignored_flags=[]):
if not isinstance(flags, dict): if not isinstance(flags, dict):
flags = dict([(s,s in flags) for s in _signals]) flags = dict([(s,s in flags) for s in _signals])
del s
if traps is not None and not isinstance(traps, dict): if traps is not None and not isinstance(traps, dict):
traps = dict([(s,s in traps) for s in _signals]) traps = dict([(s,s in traps) for s in _signals])
del s
for name, val in locals().items(): for name, val in locals().items():
if val is None: if val is None:
setattr(self, name, copy.copy(getattr(DefaultContext, name))) setattr(self, name, copy.copy(getattr(DefaultContext, name)))

View File

@ -954,34 +954,6 @@ class DecimalUsabilityTest(unittest.TestCase):
d = Decimal("Infinity") d = Decimal("Infinity")
self.assertEqual(d.as_tuple(), (0, (0,), 'F') ) self.assertEqual(d.as_tuple(), (0, (0,), 'F') )
def test_immutability_onpurpose(self):
#Try to change internal objects and see if immutable.
d = Decimal(42)
#you can get the attributes...
d.exp
d.int
d.sign
#...but not change them!
try:
d.exp = 20
d.int = 3
d.sign = 1
except AttributeError:
pass
else:
self.fail('Did not raised an error!')
#some new attribute
try:
d.newone = None
except AttributeError:
pass
else:
self.fail('Did not raised an error!')
def test_immutability_operations(self): def test_immutability_operations(self):
# Do operations and check that it didn't change change internal objects. # Do operations and check that it didn't change change internal objects.