Context flags get set, not incremented.

This commit is contained in:
Raymond Hettinger 2008-02-01 20:38:12 +00:00
parent 48aa4b1584
commit 86173daf8d
2 changed files with 6 additions and 6 deletions

View File

@ -75,7 +75,7 @@ decimal module are: :const:`Clamped`, :const:`InvalidOperation`,
:const:`Overflow`, and :const:`Underflow`. :const:`Overflow`, and :const:`Underflow`.
For each signal there is a flag and a trap enabler. When a signal is For each signal there is a flag and a trap enabler. When a signal is
encountered, its flag is incremented from zero and, then, if the trap enabler is encountered, its flag is set to one, then, if the trap enabler is
set to one, an exception is raised. Flags are sticky, so the user needs to set to one, an exception is raised. Flags are sticky, so the user needs to
reset them before monitoring a calculation. reset them before monitoring a calculation.
@ -1045,7 +1045,7 @@ Signals
Signals represent conditions that arise during computation. Each corresponds to Signals represent conditions that arise during computation. Each corresponds to
one context flag and one context trap enabler. one context flag and one context trap enabler.
The context flag is incremented whenever the condition is encountered. After the The context flag is set whenever the condition is encountered. After the
computation, flags may be checked for informational purposes (for instance, to computation, flags may be checked for informational purposes (for instance, to
determine whether a computation was exact). After checking the flags, be sure to determine whether a computation was exact). After checking the flags, be sure to
clear all flags before starting the next computation. clear all flags before starting the next computation.

View File

@ -3411,7 +3411,7 @@ class Context(object):
traps - If traps[exception] = 1, then the exception is traps - If traps[exception] = 1, then the exception is
raised when it is caused. Otherwise, a value is raised when it is caused. Otherwise, a value is
substituted in. substituted in.
flags - When an exception is caused, flags[exception] is incremented. flags - When an exception is caused, flags[exception] is set.
(Whether or not the trap_enabler is set) (Whether or not the trap_enabler is set)
Should be reset by user of Decimal instance. Should be reset by user of Decimal instance.
Emin - Minimum exponent Emin - Minimum exponent
@ -3477,16 +3477,16 @@ class Context(object):
"""Handles an error """Handles an error
If the flag is in _ignored_flags, returns the default response. If the flag is in _ignored_flags, returns the default response.
Otherwise, it increments the flag, then, if the corresponding Otherwise, it sets the flag, then, if the corresponding
trap_enabler is set, it reaises the exception. Otherwise, it returns trap_enabler is set, it reaises the exception. Otherwise, it returns
the default value after incrementing the flag. the default value after setting the flag.
""" """
error = _condition_map.get(condition, condition) error = _condition_map.get(condition, condition)
if error in self._ignored_flags: if error in self._ignored_flags:
# Don't touch the flag # Don't touch the flag
return error().handle(self, *args) return error().handle(self, *args)
self.flags[error] += 1 self.flags[error] = 1
if not self.traps[error]: if not self.traps[error]:
# The errors define how to handle themselves. # The errors define how to handle themselves.
return condition().handle(self, *args) return condition().handle(self, *args)