Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
"""Configuration utilities for polynomial manipulation algorithms. """
from __future__ import print_function, division
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. """
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() |