Commit fed52963 authored by Raymond Hettinger's avatar Raymond Hettinger

* Rename "Signals" to "_signals" making it non-public.

* Context.create_decimal can take a zero default just like Decimal().
* Fix typo in comment.
parent b60b242d
...@@ -120,7 +120,6 @@ __all__ = [ ...@@ -120,7 +120,6 @@ __all__ = [
# Constants for use in setting up contexts # Constants for use in setting up contexts
'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING', 'ROUND_DOWN', 'ROUND_HALF_UP', 'ROUND_HALF_EVEN', 'ROUND_CEILING',
'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN', 'ROUND_FLOOR', 'ROUND_UP', 'ROUND_HALF_DOWN',
'Signals', # <-- Used for building trap/flag dictionaries
# Functions for manipulating contexts # Functions for manipulating contexts
'setcontext', 'getcontext' 'setcontext', 'getcontext'
...@@ -368,7 +367,7 @@ class Underflow(Inexact, Rounded, Subnormal): ...@@ -368,7 +367,7 @@ class Underflow(Inexact, Rounded, Subnormal):
""" """
# List of public traps and flags # List of public traps and flags
Signals = [Clamped, DivisionByZero, Inexact, Overflow, Rounded, _signals = [Clamped, DivisionByZero, Inexact, Overflow, Rounded,
Underflow, InvalidOperation, Subnormal] Underflow, InvalidOperation, Subnormal]
# Map conditions (per the spec) to signals # Map conditions (per the spec) to signals
...@@ -2120,9 +2119,9 @@ class Context(object): ...@@ -2120,9 +2119,9 @@ class Context(object):
capitals=None, _clamp=0, capitals=None, _clamp=0,
_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])
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])
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)))
...@@ -2175,7 +2174,7 @@ class Context(object): ...@@ -2175,7 +2174,7 @@ class Context(object):
def _ignore_all_flags(self): def _ignore_all_flags(self):
"""Ignore all flags, if they are raised""" """Ignore all flags, if they are raised"""
return self._ignore_flags(*Signals) return self._ignore_flags(*_signals)
def _ignore_flags(self, *flags): def _ignore_flags(self, *flags):
"""Ignore the flags, if they are raised""" """Ignore the flags, if they are raised"""
...@@ -2244,7 +2243,7 @@ class Context(object): ...@@ -2244,7 +2243,7 @@ class Context(object):
self.rounding= type self.rounding= type
return rounding return rounding
def create_decimal(self, num): def create_decimal(self, num='0'):
"""Creates a new Decimal instance but using self as context.""" """Creates a new Decimal instance but using self as context."""
d = Decimal(num, context=self) d = Decimal(num, context=self)
return d._fix(context=self) return d._fix(context=self)
...@@ -2950,7 +2949,7 @@ def _isnan(num): ...@@ -2950,7 +2949,7 @@ def _isnan(num):
##### Setup Specific Contexts ################################ ##### Setup Specific Contexts ################################
# The default context prototype used by Context() # The default context prototype used by Context()
# Is mutable, so than new contexts can have different default values # Is mutable, so that new contexts can have different default values
DefaultContext = Context( DefaultContext = Context(
prec=28, rounding=ROUND_HALF_EVEN, prec=28, rounding=ROUND_HALF_EVEN,
......
...@@ -35,6 +35,9 @@ from test.test_support import TestSkipped, run_unittest, run_doctest, is_resourc ...@@ -35,6 +35,9 @@ from test.test_support import TestSkipped, run_unittest, run_doctest, is_resourc
import threading import threading
import random import random
# Useful Test Constant
Signals = getcontext().flags.keys()
# Tests are built around these assumed context defaults # Tests are built around these assumed context defaults
DefaultContext.prec=9 DefaultContext.prec=9
DefaultContext.rounding=ROUND_HALF_EVEN DefaultContext.rounding=ROUND_HALF_EVEN
...@@ -480,7 +483,10 @@ class DecimalExplicitConstructionTest(unittest.TestCase): ...@@ -480,7 +483,10 @@ class DecimalExplicitConstructionTest(unittest.TestCase):
nc.prec = 3 nc.prec = 3
# empty # empty
self.assertRaises(TypeError, nc.create_decimal) d = Decimal()
self.assertEqual(str(d), '0')
d = nc.create_decimal()
self.assertEqual(str(d), '0')
# from None # from None
self.assertRaises(TypeError, nc.create_decimal, None) self.assertRaises(TypeError, nc.create_decimal, None)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment