B
    d‹d>  ã               @   sb   d Z ddlmZ ddddddddddd	d
dœZi Zedd„ ƒZddd„Zdd„ Zdd„ Zeƒ  dS )z@Configuration utilities for polynomial manipulation algorithms. é    )ÚcontextmanagerFTé   é   é   ZrabinZ
zassenhausZ
buchberger)ZUSE_COLLINS_RESULTANTZUSE_SIMPLIFY_GCDZUSE_HEU_GCDZUSE_IRREDUCIBLE_IN_FACTORZUSE_CYCLOTOMIC_FACTORZEEZ_RESTART_IF_NEEDEDZEEZ_NUMBER_OF_CONFIGSZEEZ_NUMBER_OF_TRIESZEEZ_MODULUS_STEPZGF_IRRED_METHODZGF_FACTOR_METHODZGROEBNERc              k   sD   x|   ¡ D ]\}}t||ƒ q
W d V  x|  ¡ D ]}t|ƒ q0W d S )N)ÚitemsÚsetupÚkeys)ÚkwargsÚkÚv© r   úc/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/sympy/polys/polyconfig.pyÚusing   s
    r   Nc             C   s*   |   ¡ } |dk	r|t| < nt|  t| < dS )z3Assign a value to (or reset) a configuration item. N)ÚupperÚ_current_configÚ_default_config)ÚkeyÚvaluer   r   r   r   %   s    
r   c             C   s   t  |  ¡ d¡S )z1Ask for a value of the given configuration item. N)r   Úgetr   )r   r   r   r   Úquery/   s    r   c           	   C   sr   ddl m}  x`t ¡ D ]T\}}| d| ƒ}|dk	rbyt|ƒt|< W qj tk
r^   |t|< Y qjX q|t|< qW dS )z+Initialized configuration of polys module. r   )ÚgetenvZSYMPY_N)Úosr   r   r   Úevalr   Ú	NameError)r   r   Údefaultr   r   r   r   Ú	configure4   s    r   )N)	Ú__doc__Ú
contextlibr   r   r   r   r   r   r   r   r   r   r   Ú<module>   s&   


