12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- """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()
|