You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
"""Configuration utilities for polynomial manipulation algorithms. """
from contextlib import contextmanager
_default_config = { 'USE_COLLINS_RESULTANT': False, 'USE_SIMPLIFY_GCD': True, 'USE_HEU_GCD': True,
'USE_IRREDUCIBLE_IN_FACTOR': False, 'USE_CYCLOTOMIC_FACTOR': True,
'EEZ_RESTART_IF_NEEDED': True, 'EEZ_NUMBER_OF_CONFIGS': 3, 'EEZ_NUMBER_OF_TRIES': 5, 'EEZ_MODULUS_STEP': 2,
'GF_IRRED_METHOD': 'rabin', 'GF_FACTOR_METHOD': 'zassenhaus',
'GROEBNER': 'buchberger', }
_current_config = {}
@contextmanager def using(**kwargs): for k, v in kwargs.items(): setup(k, v)
yield
for k in kwargs.keys(): setup(k)
def setup(key, value=None): """Assign a value to (or reset) a configuration item. """ key = key.upper()
if value is not None: _current_config[key] = value else: _current_config[key] = _default_config[key]
def query(key): """Ask for a value of the given configuration item. """ return _current_config.get(key.upper(), None)
def configure(): """Initialized configuration of polys module. """ from os import getenv
for key, default in _default_config.items(): value = getenv('SYMPY_' + key)
if value is not None: try: _current_config[key] = eval(value) except NameError: _current_config[key] = value else: _current_config[key] = default
configure()
|