8000 Creation of an internal decimal context for `_pylong` has side effects on `decimal` · Issue #123284 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content
Creation of an internal decimal context for _pylong has side effects on decimal #123284
Closed as not planned
@picnixz

Description

@picnixz

Bug report

Bug description:

The _decimal module was recently fixed in #123243. I also found that _pylong leaks globals due to the creation of a global context to use as a local context:

_unbounded_dec_context = decimal.getcontext().copy()
_unbounded_dec_context.prec = decimal.MAX_PREC
_unbounded_dec_context.Emax = decimal.MAX_EMAX
_unbounded_dec_context.Emin = decimal.MIN_EMIN
_unbounded_dec_context.traps[decimal.Inexact] = 1 # sanity check

This context is used as with decimal.localcontext(_unbounded_dec_context). On the other hand decimal.getcontext().copy() returns a copy of the decimal context for the current thread (or set it to decimal.DefaultContext if none exists). Instead of setting it like that, I suggest that we construct a decimal.Context() object directly in _pylong instead of possibly polluting the decimal module (whether it's the C or the python implementation).

CPython versions tested on:

CPython main branch

Operating systems tested on:

Linux

Linked PRs

Metadata

Metadata

Assignees

Labels

stdlibPython modules in the Lib dirtype-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    0