Context flags get set, not incremented.
This commit is contained in:
parent
48aa4b1584
commit
86173daf8d
|
@ -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.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue