B
    ˜‘[n  ã               @   sr   d Z ddlmZm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. é    )Úprint_functionÚdivision)Ú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   ú5lib/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   Úquery0   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   Ú	configure5   s    r   )N)Ú__doc__Z
__future__r   r   Ú
contextlibr   r   r   r   r	   r   r   r   r   r   r   Ú<module>   s(   


