§
    OŠtj.U  ã                  óŒ  — d Z ddlmZ dgZddlmZ ddlmZ ddlm	Z	 ddl
mZmZmZ ddlmZmZmZ dd	lmZmZ dd
lZdd
lZ G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Ze G d„ de¦  «        ¦   «         Z G d„ dee¬¦  «        Z G d„ dee¬¦  «        Z  G d„ dee¬¦  «        Z! G d„ dee¬¦  «        Z" G d„ dee¬¦  «        Z# G d„ d ee¬¦  «        Z$ G d!„ d"ee¬¦  «        Z% G d#„ d$ee¬¦  «        Z& G d%„ d&ee¬¦  «        Z' G d'„ d(ee¬¦  «        Z( G d)„ d*ee¬¦  «        Z) G d+„ d,ee¬¦  «        Z* G d-„ d.ee¬¦  «        Z+ G d/„ d0ee¬¦  «        Z, G d1„ d2ee¬¦  «        Z- G d3„ d4eee¬¦  «        Z. G d5„ d6eee¬¦  «        Z/ G d7„ d8eee¬¦  «        Z0 G d9„ d:eee¬¦  «        Z1 G d;„ d<eee¬¦  «        Z2 G d=„ d>eee¬¦  «        Z3 G d?„ d@ee¬¦  «        Z4 G dA„ dBeee¬¦  «        Z5 G dC„ dDee¬¦  «        Z6 G dE„ dFee¬¦  «        Z7dJdG„Z8dH„ Z9dI„ Z:e ;                    ¦   «          d
S )Kz>Options manager for :class:`~.Poly` and public API functions. é    )ÚannotationsÚOptions)ÚBasic)ÚExpr)Úsympify)ÚGeneratorsErrorÚOptionErrorÚ	FlagError)Únumbered_symbolsÚtopological_sortÚpublic)Úhas_dupsÚis_sequenceNc                  ó    — e Zd ZU dZdZded<   dZg Zded<   g Zded<   g Z	ded	<   g Z
ded
<   ed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚOptionz%Base class for all kinds of options. Nz
str | NoneÚoptionFú	list[str]ÚrequiresÚexcludesÚafterÚbeforec                ó   — d S ©N© ©Úclss    úU/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/polys/polyoptions.pyÚdefaultzOption.default   ó   € àˆtó    c                ó   — d S r   r   )r   r   s     r   Ú
preprocesszOption.preprocess#   r   r    c                ó   — d S r   r   ©r   Úoptionss     r   ÚpostprocesszOption.postprocess'   s   € àˆr    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú__annotations__Úis_Flagr   r   r   r   Úclassmethodr   r"   r&   r   r    r   r   r      sÅ   € € € € € € Ø/Ð/à€FÐÐÐÑà€Gà€HÐÐÐÑØ€HÐÐÐÑà€EÐÐÐÑØ€FÐÐÐÑàðð ñ „[ðð ðð ñ „[ðð ðð ñ „[ðð ð r    r   c                  ó   — e Zd ZdZdZdS )ÚFlagz#Base class for all kinds of flags. TN)r'   r(   r)   r*   r,   r   r    r   r/   r/   ,   s   € € € € € Ø-Ð-à€G€G€Gr    r/   c                  ó(   — e Zd ZdZed„ ¦   «         ZdS )ÚBooleanOptionzAAn option that must have a boolean value or equivalent assigned. c                ó\   — |dv rt          |¦  «        S t          d| j        ›d|›�¦  «        ‚)N)TFú'z*' must have a boolean value assigned, got )Úboolr	   r   )r   Úvalues     r   r"   zBooleanOption.preprocess5   s<   € à�MÐ!Ð!Ý˜‘;”;Ðå�+ÐSVÔS]ÐS]ÐS]Ð_dÐ_dÐeÑfÔfÐfr    N)r'   r(   r)   r*   r-   r"   r   r    r   r1   r1   2   s8   € € € € € ØKÐKàðgð gñ „[ðgð gð gr    r1   c                  ó   — e Zd ZdZd„ ZdS )Ú
OptionTypez7Base type for all options that does registers options. c                óŠ   ‡ — t           ˆ fd„¦   «         }t          t          ‰ j        |¦  «         ‰ t          j        ‰ j        <   d S )Nc                óh   •— 	 | ‰j                  S # t          $ r ‰                     ¦   «         cY S w xY wr   )r   ÚKeyErrorr   )Úselfr   s    €r   Úgetterz#OptionType.__init__.<locals>.getterA   sD   ø€ ð%Ø˜CœJÔ'Ð'øÝð %ð %ð %Ø—{’{‘}”}Ð$Ð$Ð$ð%øøøs   ƒ �1°1)ÚpropertyÚsetattrr   r   Ú__options__)r   ÚargsÚkwargsr<   s   `   r   Ú__init__zOptionType.__init__@   sQ   ø€ Ý	ð	%ð 	%ð 	%ð 	%ñ 
Œð	%õ 	•˜œ VÑ,Ô,Ð,Ø*-�Ô˜CœJÑ'Ð'Ð'r    N)r'   r(   r)   r*   rB   r   r    r   r7   r7   =   s)   € € € € € ØAÐAð	.ð 	.ð 	.ð 	.ð 	.r    r7   c                  ó´   ‡ — e Zd ZU dZdZi Zded<   ded<   ded<   dd
„Zed„ ¦   «         Z	i fd„Z
ˆ fd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zˆ xZS )r   aB  
    Options manager for polynomial manipulation module.

    Examples
    ========

    >>> from sympy.polys.polyoptions import Options
    >>> from sympy.polys.polyoptions import build_options

    >>> from sympy.abc import x, y, z

    >>> Options((x, y, z), {'domain': 'ZZ'})
    {'auto': False, 'domain': ZZ, 'gens': (x, y, z)}

    >>> build_options((x, y, z), {'domain': 'ZZ'})
    {'auto': False, 'domain': ZZ, 'gens': (x, y, z)}

    **Options**

    * Expand --- boolean option
    * Gens --- option
    * Wrt --- option
    * Sort --- option
    * Order --- option
    * Field --- boolean option
    * Greedy --- boolean option
    * Domain --- option
    * Split --- boolean option
    * Gaussian --- boolean option
    * Extension --- option
    * Modulus --- option
    * Symmetric --- boolean option
    * Strict --- boolean option

    **Flags**

    * Auto --- boolean flag
    * Frac --- boolean flag
    * Formal --- boolean flag
    * Polys --- boolean flag
    * Include --- boolean flag
    * All --- boolean flag
    * Gen --- flag
    * Series --- boolean flag

    Nzdict[str, type[Option]]r?   ztuple[Expr, ...]Úgenszsympy.polys.domains.DomainÚdomainFc           	     ó(  ‡ ‡‡— t                                ‰ ¦  «         |r%|                     dd¦  «        rt          d¦  «        ‚|rt          |¦  «        }||d<   |                     di ¦  «        }ˆˆ ˆfd„} ||¦  «         t          |¦  «        D ]<}|‰ v r||= Œ
‰                      ¦   «         D ]}‰ j        |         }	||	j        v r||=  nŒŒ= ||¦  «         ‰                      ¦   «         D ]y}‰ j        |         }	|	j        D ]-}
‰                      |
¦  «        €t          d|›d|
›d�¦  «        ‚Œ.|	j        D ]-}‰                      |¦  «        �t          d|›d|›d�¦  «        ‚Œ.Œz‰ j	        D ]"}‰ j        |          
                    ‰ ¦  «         Œ#d S )	NrD   r   z1both '*gens' and keyword argument 'gens' suppliedÚdefaultsc                ó,  •— |                       ¦   «         D ]}\  }}	 ‰j        |         }n # t          $ r t          d|z  ¦  «        ‚w xY wt	          |t
          ¦  «        r‰�|‰vr‰rt          d|z  ¦  «        ‚|�|                     |¦  «        ‰|<   Œ~d S )Nú'%s' is not a valid optionú('%s' flag is not allowed in this context)Úitemsr?   r:   r	   Ú
issubclassr/   r"   )r@   r   r5   r   Úflagsr;   Ústricts       €€€r   Úpreprocess_optionsz,Options.__init__.<locals>.preprocess_options�   sÎ   ø€ Ø!%§¢¡¤ð 9ð 9‘�˜ðMØÔ*¨6Ô2�C�CøÝð Mð Mð MÝ%Ð&BÀVÑ&KÑLÔLÐLðMøøøõ ˜c¥4Ñ(Ô(ð cØ�}¨°eÐ(;Ð(;Ø!ð cÝ"-Ð.XÐ[aÑ.aÑ"bÔ"bÐbàÐ$Ø#&§>¢>°%Ñ#8Ô#8�D˜‘Løð9ð 9s	   œ*ªAr3   z(' option is only allowed together with 'z'' option is not allowed together with ')ÚdictrB   Úgetr	   ÚpopÚkeysr?   r   r   Ú	__order__r&   )r;   rD   r@   rM   rN   rG   rO   Úkeyr   r   Úrequire_optionÚexclude_options   `  ``       r   rB   zOptions.__init__ƒ   s2  øøø€ Ý�Š�dÑÔÐàð 	 �D—H’H˜V RÑ(Ô(ð 	 ÝØCñEô Eð Eàð 	 Ý˜‘:”:ˆDØˆD�‰Là—8’8˜J¨Ñ+Ô+ˆð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	Ð˜4Ñ Ô Ð å˜‘>”>ð 		ð 		ˆCØ�dˆ{ˆ{Ø˜S�M�Mà"Ÿiši™kœkð ð �FØÔ*¨6Ô2�Cà˜cœlÐ*Ð*Ø$ S˜MØ˜ð +øð 	Ð˜8Ñ$Ô$Ð$à—i’i‘k”kð 		rð 		rˆFØÔ" 6Ô*ˆCà"%¤,ð sð s�Ø—8’8˜NÑ+Ô+Ð3Ý%˜+ÐZ`ÐZ`ÐZ`ÐbpÐbpÐbpÐ&qÑrÔrÐrð 4ð #&¤,ð rð r�Ø—8’8˜NÑ+Ô+Ð7Ý%˜+ÐY_ÐY_ÐY_ÐaoÐaoÐaoÐ&pÑqÔqÐqð 8ðrð ”nð 	7ð 	7ˆFØÔ˜VÔ$×0Ò0°Ñ6Ô6Ð6Ð6ð	7ð 	7r    c                ó¼  ‡— | j         €Óg t          ¦   «         }}| j                             ¦   «         D ]f\  Š}|                     ‰¦  «         |                     ˆfd„|j        D ¦   «         ¦  «         |                     ˆfd„|j        D ¦   «         ¦  «         Œg	 t          |t          |¦  «        f¦  «        | _         dS # t          $ r t          d¦  «        ‚w xY wdS )z*Resolve the order of options' processing. Nc              3  ó    •K  — | ]}|‰fV — Œ	d S r   r   ©Ú.0Ú_nameÚnames     €r   ú	<genexpr>z3Options._init_dependencies_order.<locals>.<genexpr>Ä   s'   øè è € ÐEÐE¨u˜e T˜]ÐEÐEÐEÐEÐEÐEr    c              3  ó    •K  — | ]}‰|fV — Œ	d S r   r   rZ   s     €r   r^   z3Options._init_dependencies_order.<locals>.<genexpr>Æ   s'   øè è € ÐFÐF¨u˜d E˜]ÐFÐFÐFÐFÐFÐFr    z/cycle detected in sympy.polys options framework)rT   Úsetr?   rK   ÚappendÚupdater   r   r   ÚlistÚ
ValueErrorÚRuntimeError)r   ÚverticesÚedgesr   r]   s       @r   Ú_init_dependencies_orderz Options._init_dependencies_order»   s  ø€ ð Œ=Ð Ø ¥#¡%¤%�eˆHà #¤× 5Ò 5Ñ 7Ô 7ð Gð G‘��fØ—’ Ñ%Ô%Ð%à—’ÐEÐEÐEÐE¸¼ÐEÑEÔEÑEÔEÐEà—’ÐFÐFÐFÐF¸¼ÐFÑFÔFÑFÔFÐFÐFðGÝ 0°(½DÀ¹K¼KÐ1HÑ IÔ I�”��øÝð Gð Gð GÝ"ØEñGô Gð GðGøøøð !Ð s   Â#B? Â?Cc                óÀ   — t                                | j        ¦  «        }|                      ¦   «         D ]
\  }}|||<   Œ|                     ¦   «         D ]
\  }}|||<   Œ|S )z-Clone ``self`` and update specified options. )rP   Ú__new__Ú	__class__rK   )r;   ÚupdatesÚobjr   r5   s        r   ÚclonezOptions.cloneÎ   sf   € å�lŠl˜4œ>Ñ*Ô*ˆà!ŸZšZ™\œ\ð 	 ð 	 ‰MˆF�EØˆC�‰KˆKà$Ÿ]š]™_œ_ð 	 ð 	 ‰MˆF�EØˆC�‰KˆKàˆ
r    c                ól   •— || j         v r|| |<   d S t          ¦   «                              ||¦  «         d S r   )r?   ÚsuperÚ__setattr__)r;   Úattrr5   rk   s      €r   rq   zOptions.__setattr__Ú   s>   ø€ Ø�4Ô#Ð#Ð#ØˆD�‰JˆJˆJå‰GŒG×Ò  eÑ,Ô,Ð,Ð,Ð,r    c                óœ   — i }|                       ¦   «         D ]4\  }}|�-|dk    r'| j        |         }t          |t          ¦  «        s|||<   Œ5|S )NrD   )rK   r?   rL   r/   )r;   r@   r   r5   r   s        r   r@   zOptions.argsà   s`   € àˆà!ŸZšZ™\œ\ð 	)ð 	)‰MˆF�EØÐ  V¨vÒ%5Ð%5ØÔ& vÔ.�å! #¥tÑ,Ô,ð )Ø#(�D˜‘Løàˆr    c                ó˜   — i }| j                              ¦   «         D ]-\  }}t          |t          ¦  «        st	          | |¦  «        ||<   Œ.|S r   ©r?   rK   rL   r/   Úgetattr)r;   r%   r   r   s       r   r%   zOptions.optionsí   sT   € àˆàÔ+×1Ò1Ñ3Ô3ð 	8ð 	8‰KˆF�CÝ˜c¥4Ñ(Ô(ð 8Ý")¨$°Ñ"7Ô"7�˜‘øàˆr    c                ó˜   — i }| j                              ¦   «         D ]-\  }}t          |t          ¦  «        rt	          | |¦  «        ||<   Œ.|S r   ru   )r;   rM   r   r   s       r   rM   zOptions.flags÷   sT   € àˆàÔ+×1Ò1Ñ3Ô3ð 	6ð 	6‰KˆF�CÝ˜#�tÑ$Ô$ð 6Ý '¨¨fÑ 5Ô 5��f‘øàˆr    ©NF)r'   r(   r)   r*   rT   r?   r+   rB   r-   rh   rn   rq   r=   r@   r%   rM   Ú__classcell__)rk   s   @r   r   r   L   s  ø€ € € € € € ð-ð -ð^ €IØ+-€KÐ-Ð-Ð-Ñ-àÐÐÑØ&Ð&Ð&Ñ&ð67ð 67ð 67ð 67ðp ðGð Gñ „[ðGð$ ð 
ð 
ð 
ð 
ð-ð -ð -ð -ð -ð ð
ð 
ñ „Xð
ð ðð ñ „Xðð ðð ñ „Xðð ð ð ð r    c                  óJ   — e Zd ZU dZdZg Zded<   g Zded<   ed„ ¦   «         Z	dS )ÚExpandz8``expand`` option to polynomial manipulation functions. Úexpandr   r   r   c                ó   — dS ©NTr   r   s    r   r   zExpand.default
  r   r    N)
r'   r(   r)   r*   r   r   r+   r   r-   r   r   r    r   r{   r{     s\   € € € € € € ØBÐBà€Fà€HÐÐÐÑØ€HÐÐÐÑàðð ñ „[ðð ð r    r{   )Ú	metaclassc                  ó`   — e Zd ZU dZdZg Zded<   g Zded<   ed„ ¦   «         Z	ed„ ¦   «         Z
dS )	ÚGensz6``gens`` option to polynomial manipulation functions. rD   r   r   r   c                ó   — dS )Nr   r   r   s    r   r   zGens.default  s   € àˆrr    c                ó�  — t          |t          ¦  «        r|f}n0t          |¦  «        dk    rt          |d         ¦  «        r|d         }|dk    rd}nft	          |¦  «        rt          dt          |¦  «        z  ¦  «        ‚t          d„ |D ¦   «         ¦  «        rt          dt          |¦  «        z  ¦  «        ‚t          |¦  «        S )Né   r   r   r   zduplicated generators: %sc              3  ó(   K  — | ]}|j         d u V — ŒdS )FN)Úis_commutative©r[   Úgens     r   r^   z"Gens.preprocess.<locals>.<genexpr>&  s*   è è € Ð=Ð=°�Ô# uÐ,Ð=Ð=Ð=Ð=Ð=Ð=r    znon-commutative generators: %s)	Ú
isinstancer   Úlenr   r   r   ÚstrÚanyÚtuple)r   rD   s     r   r"   zGens.preprocess  sÄ   € å�d�EÑ"Ô"ð 	Ø�7ˆDˆDÝ�‰YŒY˜!Š^ˆ^¥¨D°¬GÑ 4Ô 4ˆ^Ø˜”7ˆDà�7Š?ˆ?ØˆDˆDÝ�d‰^Œ^ð 	PÝ!Ð"=ÅÀDÁ	Ä	Ñ"IÑJÔJÐJÝÐ=Ð=¸Ð=Ñ=Ô=Ñ=Ô=ð 	PÝ!Ð"BÅSÈÁYÄYÑ"NÑOÔOÐOå�T‰{Œ{Ðr    N©r'   r(   r)   r*   r   r   r+   r   r-   r   r"   r   r    r   r�   r�     sw   € € € € € € Ø@Ð@à€Fà€HÐÐÐÑØ€HÐÐÐÑàðð ñ „[ðð ðð ñ „[ðð ð r    r�   c                  ój   — e Zd ZU dZdZg Zded<   g Zded<    ej	        d¦  «        Z
ed„ ¦   «         ZdS )	ÚWrtz5``wrt`` option to polynomial manipulation functions. Úwrtr   r   r   z\s*,\s*|\s+c                ó¾  — t          |t          ¦  «        rt          |¦  «        gS t          |t          ¦  «        rc|                     ¦   «         }|                     d¦  «        rt          d¦  «        ‚|sg S t          | j                             |¦  «        ¦  «        S t          |d¦  «        r"t          t          t          |¦  «        ¦  «        S t          d¦  «        ‚)Nú,zBad input: missing parameter.Ú__getitem__z!invalid argument for 'wrt' option)r‰   r   r‹   ÚstripÚendswithr	   rc   Ú	_re_splitÚsplitÚhasattrÚmap)r   r‘   s     r   r"   zWrt.preprocess6  sÊ   € å�c�5Ñ!Ô!ð 	CÝ˜‘H”H�:ÐÝ˜�SÑ!Ô!ð 
	CØ—)’)‘+”+ˆCØ�|Š|˜CÑ Ô ð CÝ!Ð"AÑBÔBÐBØð Ø�	Ý˜œ×+Ò+¨CÑ0Ô0Ñ1Ô1Ð1Ý�S˜-Ñ(Ô(ð 	CÝ��C ™œÑ&Ô&Ð&åÐAÑBÔBÐBr    N)r'   r(   r)   r*   r   r   r+   r   ÚreÚcompiler—   r-   r"   r   r    r   r�   r�   ,  sr   € € € € € € Ø?Ð?à€Fà€HÐÐÐÑØ€HÐÐÐÑà�”
˜>Ñ*Ô*€IàðCð Cñ „[ðCð Cð Cr    r�   c                  ó`   — e Zd ZU dZdZg Zded<   g Zded<   ed„ ¦   «         Z	ed„ ¦   «         Z
dS )	ÚSortz6``sort`` option to polynomial manipulation functions. Úsortr   r   r   c                ó   — g S r   r   r   s    r   r   zSort.defaultO  s   € àˆ	r    c                óì   — t          |t          ¦  «        rd„ |                     d¦  «        D ¦   «         S t          |d¦  «        r"t	          t          t          |¦  «        ¦  «        S t          d¦  «        ‚)Nc                ó6   — g | ]}|                      ¦   «         ‘ŒS r   )r•   r‡   s     r   ú
<listcomp>z#Sort.preprocess.<locals>.<listcomp>V  s    € Ð=Ð=Ð= S�S—Y’Y‘[”[Ð=Ð=Ð=r    ú>r”   z"invalid argument for 'sort' option)r‰   r‹   r˜   r™   rc   rš   r	   )r   rŸ   s     r   r"   zSort.preprocessS  sk   € å�d�CÑ Ô ð 	DØ=Ð=¨D¯JªJ°s©O¬OÐ=Ñ=Ô=Ð=Ý�T˜=Ñ)Ô)ð 	DÝ��C ™œÑ'Ô'Ð'åÐBÑCÔCÐCr    NrŽ   r   r    r   rž   rž   G  s|   € € € € € € Ø@Ð@à€Fà€HÐÐÐÑØ€HÐÐÐÑàðð ñ „[ðð ðDð Dñ „[ðDð Dð Dr    rž   c                  ó`   — e Zd ZU dZdZg Zded<   g Zded<   ed„ ¦   «         Z	ed„ ¦   «         Z
dS )	ÚOrderz7``order`` option to polynomial manipulation functions. Úorderr   r   r   c                ó.   — t           j        j        j        S r   )ÚsympyÚpolysÚ	orderingsÚlexr   s    r   r   zOrder.defaulte  s   € åŒ{Ô$Ô(Ð(r    c                óJ   — t           j        j                             |¦  «        S r   )r©   rª   r«   Úmonomial_key)r   r§   s     r   r"   zOrder.preprocessi  s   € åŒ{Ô$×1Ò1°%Ñ8Ô8Ð8r    NrŽ   r   r    r   r¦   r¦   ]  sw   € € € € € € ØAÐAà€Fà€HÐÐÐÑØ€HÐÐÐÑàð)ð )ñ „[ð)ð ð9ð 9ñ „[ð9ð 9ð 9r    r¦   c                  ó.   — e Zd ZU dZdZg Zded<   g d¢ZdS )ÚFieldz7``field`` option to polynomial manipulation functions. Úfieldr   r   )rE   r˜   ÚgaussianN©r'   r(   r)   r*   r   r   r+   r   r   r    r   r°   r°   n  s7   € € € € € € ØAÐAà€Fà€HÐÐÐÑØ.Ð.Ð.€H€H€Hr    r°   c                  ó.   — e Zd ZU dZdZg Zded<   g d¢ZdS )ÚGreedyz8``greedy`` option to polynomial manipulation functions. Úgreedyr   r   ©rE   r˜   r²   Ú	extensionÚmodulusÚ	symmetricNr³   r   r    r   rµ   rµ   w  s7   € € € € € € ØBÐBà€Fà€HÐÐÐÑØSÐSÐS€H€H€Hr    rµ   c                  óD   — e Zd ZU dZdZed„ ¦   «         Zg Zded<   g d¢Z	dS )Ú	Compositez;``composite`` option to polynomial manipulation functions. Ú	compositec                ó   — d S r   r   r   s    r   r   zComposite.default…  r   r    r   r   r·   N)
r'   r(   r)   r*   r   r-   r   r   r+   r   r   r    r   r¼   r¼   €  sR   € € € € € € ØEÐEà€Fàðð ñ „[ðð €HÐÐÐÑØSÐSÐS€H€H€Hr    r¼   c                  ó   — e Zd ZU dZdZg Zded<   g d¢ZdgZ e	j
        d¦  «        Z e	j
        d¦  «        Z e	j
        d	¦  «        Z e	j
        d
¦  «        Z e	j
        d¦  «        Z e	j
        d¦  «        Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚDomainz8``domain`` option to polynomial manipulation functions. rE   r   r   )r±   r¶   r˜   r²   r¸   rD   z^(R|RR)(_(\d+))?$z^(C|CC)(_(\d+))?$z^(FF|GF)\((\d+)\)$z)^(Z|ZZ|Q|QQ|ZZ_I|QQ_I|R|RR|C|CC)\[(.+)\]$z^(Z|ZZ|Q|QQ)\((.+)\)$z^(Q|QQ)\<(.+)\>$c                ój	  — t          |t          j        j        j        ¦  «        r|S t          |d¦  «        r|                     ¦   «         S t          |t          ¦  «        �rB|dv rt          j        j        j        S |dv rt          j        j        j	        S |dk    rt          j        j        j
        S |dk    rt          j        j        j        S |dk    rt          j        j        j        S | j                             |¦  «        }|�a|                     ¦   «         \  }}}|€t          j        j        j        S t          j        j                             t%          |¦  «        ¦  «        S | j                             |¦  «        }|�a|                     ¦   «         \  }}}|€t          j        j        j        S t          j        j                             t%          |¦  «        ¦  «        S | j                             |¦  «        }|�It          j        j                             t%          |                     ¦   «         d         ¦  «        ¦  «        S | j                             |¦  «        }|��|                     ¦   «         \  }}t3          t5          t6          |                     d¦  «        ¦  «        ¦  «        }|dv rt          j        j        j        j        |Ž S |dv rt          j        j        j	        j        |Ž S |d	v rt          j        j        j        j        |Ž S |dk    rt          j        j        j
        j        |Ž S |dk    rt          j        j        j        j        |Ž S t          j        j        j        j        |Ž S | j                             |¦  «        }|�Š|                     ¦   «         \  }}t3          t5          t6          |                     d¦  «        ¦  «        ¦  «        }|dv rt          j        j        j        j        |Ž S t          j        j        j	        j        |Ž S | j                              |¦  «        }|�jt3          t5          t6          |                     ¦   «         d                              d¦  «        ¦  «        ¦  «        }t          j        j        j	        j!        |Ž S tE          d
|z  ¦  «        ‚)NÚ	to_domain)ÚZÚZZ)ÚQÚQQÚZZ_IÚQQ_IÚEXr„   r“   )ÚRÚRRz-expected a valid domain specification, got %s)#r‰   r©   rª   ÚdomainsrÀ   r™   rÂ   r‹   rÄ   rÆ   rÇ   rÈ   rÉ   Ú_re_realfieldÚmatchÚgroupsrË   Ú	RealFieldÚintÚ_re_complexfieldÚCCÚComplexFieldÚ_re_finitefieldÚFFÚ_re_polynomialrc   rš   r   r˜   Ú	poly_ringÚ_re_fractionÚ
frac_fieldÚ_re_algebraicÚalgebraic_fieldr	   )r   rE   ÚrÚ_ÚprecÚgroundrD   s          r   r"   zDomain.preprocessž  sâ  € å�f�eœkÔ1Ô8Ñ9Ô9ð Q	EØˆMÝ�V˜[Ñ)Ô)ð O	EØ×#Ò#Ñ%Ô%Ð%Ý˜¥Ñ$Ô$ñ M	EØ˜Ð$Ð$Ý”{Ô*Ô-Ð-à˜Ð$Ð$Ý”{Ô*Ô-Ð-à˜ÒÐÝ”{Ô*Ô/Ð/à˜ÒÐÝ”{Ô*Ô/Ð/à˜Š~ˆ~Ý”{Ô*Ô-Ð-àÔ!×'Ò'¨Ñ/Ô/ˆAàˆ}ØŸXšX™ZœZ‘
��1�dà�<Ý œ;Ô.Ô1Ð1å œ;Ô.×8Ò8½¸T¹¼ÑCÔCÐCàÔ$×*Ò*¨6Ñ2Ô2ˆAàˆ}ØŸXšX™ZœZ‘
��1�dà�<Ý œ;Ô.Ô1Ð1å œ;Ô.×;Ò;½CÀ¹I¼IÑFÔFÐFàÔ#×)Ò)¨&Ñ1Ô1ˆAàˆ}Ý”{Ô*×-Ò-­c°!·(²(±*´*¸Q´-Ñ.@Ô.@ÑAÔAÐAàÔ"×(Ò(¨Ñ0Ô0ˆAà‰}Ø Ÿxšx™zœz‘�˜å�C¥¨¯ª°C©¬Ñ9Ô9Ñ:Ô:�à˜[Ð(Ð(Ý œ;Ô.Ô1Ô;¸TÐBÐBØ˜{Ð*Ð*Ý œ;Ô.Ô1Ô;¸TÐBÐBØ˜{Ð*Ð*Ý œ;Ô.Ô1Ô;¸TÐBÐBØ˜vÒ%Ð%Ý œ;Ô.Ô3Ô=¸tÐDÐDØ˜vÒ%Ð%Ý œ;Ô.Ô3Ô=¸tÐDÐDå œ;Ô.Ô1Ô;¸TÐBÐBàÔ ×&Ò& vÑ.Ô.ˆAàˆ}Ø Ÿxšx™zœz‘�˜å�C¥¨¯ª°C©¬Ñ9Ô9Ñ:Ô:�à˜[Ð(Ð(Ý œ;Ô.Ô1Ô<¸dÐCÐCå œ;Ô.Ô1Ô<¸dÐCÐCàÔ!×'Ò'¨Ñ/Ô/ˆAàˆ}Ý�C¥¨¯ª©¬°A¬×)<Ò)<¸SÑ)AÔ)AÑBÔBÑCÔC�Ý”{Ô*Ô-Ô=¸tÐDÐDåÐIÈFÑRÑSÔSÐSr    c                ó4  — d|v rPd|v rL|d         j         r?t          |d         j        ¦  «        t          |d         ¦  «        z  rt          d¦  «        ‚d|vs|d         s5d|v r/|d         t          j        j        j        k    rt          d¦  «        ‚d S d S d S )NrD   rE   z/ground domain and generators interfere togetherz>you have to provide generators because EX domain was requested)Úis_Compositer`   Úsymbolsr   r©   rª   rÌ   rÉ   r$   s     r   r&   zDomain.postprocessõ  sÀ   € à�WÐÐ ¨WÐ!4Ð!4¸ÀÔ9JÔ9WÐ!4Ý�W˜XÔ&Ô.Ñ/Ô/µ#°g¸f´oÑ2FÔ2FÑFð "5å!ØAñCô Cð Cà˜GÐ#Ð#¨7°6¬?Ð#Ø˜GÐ#Ð#¨°Ô(9½U¼[Ô=PÔ=SÒ(SÐ(SÝ!Ð"bÑcÔcÐcð $Ð#ð $Ð#Ø(SÐ(Sr    N)r'   r(   r)   r*   r   r   r+   r   r   r›   rœ   rÍ   rÒ   rÕ   r×   rÙ   rÛ   r-   r"   r&   r   r    r   rÀ   rÀ   �  sñ   € € € € € € ØBÐBà€Fà€HÐÐÐÑØDÐDÐD€HàˆH€Eà�B”JÐ3Ñ4Ô4€MØ!�r”zÐ"6Ñ7Ô7ÐØ �b”jÐ!6Ñ7Ô7€OØ�R”ZÐ LÑMÔM€NØ�2”:Ð6Ñ7Ô7€LØ�B”JÐ2Ñ3Ô3€MàðTTð TTñ „[ðTTðl ðdð dñ „[ðdð dð dr    rÀ   c                  óD   — e Zd ZU dZdZg Zded<   g d¢Zed„ ¦   «         Z	dS )ÚSplitz7``split`` option to polynomial manipulation functions. r˜   r   r   )r±   r¶   rE   r²   r¸   r¹   rº   c                ó,   — d|v rt          d¦  «        ‚d S )Nr˜   z%'split' option is not implemented yet)ÚNotImplementedErrorr$   s     r   r&   zSplit.postprocess	  s$   € à�gÐÐÝ%Ð&MÑNÔNÐNð Ðr    N©
r'   r(   r)   r*   r   r   r+   r   r-   r&   r   r    r   rå   rå      sc   € € € € € € ØAÐAà€Fà€HÐÐÐÑð ð  ð  €Hð ðOð Oñ „[ðOð Oð Or    rå   c                  óD   — e Zd ZU dZdZg Zded<   g d¢Zed„ ¦   «         Z	dS )ÚGaussianz:``gaussian`` option to polynomial manipulation functions. r²   r   r   )r±   r¶   rE   r˜   r¸   r¹   rº   c                ó�   — d|v r?|d         du r7t           j        j        j        |d<   t                               |¦  «         d S d S d S )Nr²   TrE   )r©   rª   rÌ   rÈ   Ú	Extensionr&   r$   s     r   r&   zGaussian.postprocess  sV   € à˜Ð Ð  W¨ZÔ%8¸DÐ%@Ð%@Ý %¤Ô 3Ô 8ˆG�HÑÝ×!Ò! 'Ñ*Ô*Ð*Ð*Ð*ð !Ð Ð%@Ð%@r    Nrè   r   r    r   rê   rê     s^   € € € € € € ØDÐDà€Fà€HÐÐÐÑð ð  ð  €Hð ð+ð +ñ „[ð+ð +ð +r    rê   c                  óZ   — e Zd ZU dZdZg Zded<   g d¢Zed„ ¦   «         Z	ed„ ¦   «         Z
dS )	rì   z;``extension`` option to polynomial manipulation functions. r¸   r   r   )r¶   rE   r˜   r²   r¹   rº   c                óª   — |dk    rt          |¦  «        S |dk    rt          d¦  «        ‚t          |d¦  «        s|h}n|sd }nt          |¦  «        }|S )Nr„   r   z.'False' is an invalid argument for 'extension'Ú__iter__)r4   r	   r™   r`   )r   r¸   s     r   r"   zExtension.preprocess(  sj   € à˜Š>ˆ>Ý˜	‘?”?Ð"Ø˜!Š^ˆ^ÝÐNÑOÔOÐOå˜9 jÑ1Ô1ð /Ø&˜K�	�	à ð /Ø $�I�Iå # I¡¤�IàÐr    c                óv   — d|v r2|d         dur*t          j        j        j        j        |d         Ž |d<   d S d S d S )Nr¸   TrE   )r©   rª   rÌ   rÆ   rÜ   r$   s     r   r&   zExtension.postprocess9  sR   € à˜'Ð!Ð! g¨kÔ&:À$Ð&FÐ&FÝ %¤Ô 3Ô 6Ô FØ˜Ô%ð!'ˆG�HÑÐÐð "Ð!Ð&FÐ&Fr    N©r'   r(   r)   r*   r   r   r+   r   r-   r"   r&   r   r    r   rì   rì     sy   € € € € € € ØEÐEà€Fà€HÐÐÐÑðð ð €Hð ðð ñ „[ðð  ð'ð 'ñ „[ð'ð 'ð 'r    rì   c                  óZ   — e Zd ZU dZdZg Zded<   g d¢Zed„ ¦   «         Z	ed„ ¦   «         Z
dS )	ÚModulusz9``modulus`` option to polynomial manipulation functions. r¹   r   r   )r¶   r˜   rE   r²   r¸   c                ó|   — t          |¦  «        }|j        r|dk    rt          |¦  «        S t          d|z  ¦  «        ‚)Nr   z)'modulus' must a positive integer, got %s)r   Ú
is_IntegerrÑ   r	   )r   r¹   s     r   r"   zModulus.preprocessH  sL   € å˜'Ñ"Ô"ˆàÔð 	G '¨A¢+ +Ý�w‘<”<ÐåØ;¸gÑEñGô Gð Gr    c                óž   — d|v rH|d         }|                      dd¦  «        }t          j        j                             ||¦  «        |d<   d S d S )Nr¹   rº   TrE   )rQ   r©   rª   rÌ   rÖ   )r   r%   r¹   rº   s       r   r&   zModulus.postprocessR  sW   € à˜ÐÐØ˜iÔ(ˆGØŸš K°Ñ6Ô6ˆIÝ %¤Ô 3× 6Ò 6°wÀ	Ñ JÔ JˆG�HÑÐÐð  Ðr    Nrñ   r   r    r   ró   ró   @  sy   € € € € € € ØCÐCà€Fà€HÐÐÐÑØEÐEÐE€HàðGð Gñ „[ðGð ðKð Kñ „[ðKð Kð Kr    ró   c                  ó$   — e Zd ZdZdZdgZg d¢ZdS )Ú	Symmetricz;``symmetric`` option to polynomial manipulation functions. rº   r¹   )r¶   rE   r˜   r²   r¸   N)r'   r(   r)   r*   r   r   r   r   r    r   rø   rø   Z  s+   € € € € € ØEÐEà€Fàˆ{€HØEÐEÐE€H€H€Hr    rø   c                  ó,   — e Zd ZdZdZed„ ¦   «         ZdS )ÚStrictz8``strict`` option to polynomial manipulation functions. rN   c                ó   — dS r~   r   r   s    r   r   zStrict.defaulth  r   r    N©r'   r(   r)   r*   r   r-   r   r   r    r   rú   rú   c  s8   € € € € € ØBÐBà€Fàðð ñ „[ðð ð r    rú   c                  óJ   — e Zd ZdZdZg d¢Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚAutoz4``auto`` flag to polynomial manipulation functions. Úauto)r±   rE   r¸   r²   c                ó   — dS r~   r   r   s    r   r   zAuto.defaultt  r   r    c                ó0   — d|v sd|v rd|vrd|d<   d S d S d S )NrE   r±   rÿ   Fr   r$   s     r   r&   zAuto.postprocessx  s=   € à˜ÐÐ 7¨gÐ#5Ð#5¸6ÈÐ;PÐ;PØ#ˆG�F‰OˆOˆOð <QÐ;PÐ#5Ð#5r    N)	r'   r(   r)   r*   r   r   r-   r   r&   r   r    r   rþ   rþ   m  s^   € € € € € Ø>Ð>à€Fà8Ð8Ð8€Eàðð ñ „[ðð ð$ð $ñ „[ð$ð $ð $r    rþ   c                  ó,   — e Zd ZdZdZed„ ¦   «         ZdS )ÚFracz6``auto`` option to polynomial manipulation functions. Úfracc                ó   — dS rx   r   r   s    r   r   zFrac.defaultƒ  ó   € àˆur    Nrü   r   r    r   r  r  ~  s8   € € € € € Ø@Ð@à€Fàðð ñ „[ðð ð r    r  c                  ó,   — e Zd ZdZdZed„ ¦   «         ZdS )ÚFormalz6``formal`` flag to polynomial manipulation functions. Úformalc                ó   — dS rx   r   r   s    r   r   zFormal.default�  r  r    Nrü   r   r    r   r  r  ˆ  ó8   € € € € € Ø@Ð@à€Fàðð ñ „[ðð ð r    r  c                  ó   — e Zd ZdZdZdS )ÚPolysz5``polys`` flag to polynomial manipulation functions. rª   N)r'   r(   r)   r*   r   r   r    r   r  r  ’  s   € € € € € Ø?Ð?à€F€F€Fr    r  c                  ó,   — e Zd ZdZdZed„ ¦   «         ZdS )ÚIncludez7``include`` flag to polynomial manipulation functions. Úincludec                ó   — dS rx   r   r   s    r   r   zInclude.default�  r  r    Nrü   r   r    r   r  r  ˜  s8   € € € € € ØAÐAà€Fàðð ñ „[ðð ð r    r  c                  ó,   — e Zd ZdZdZed„ ¦   «         ZdS )ÚAllz3``all`` flag to polynomial manipulation functions. Úallc                ó   — dS rx   r   r   s    r   r   zAll.default§  r  r    Nrü   r   r    r   r  r  ¢  s8   € € € € € Ø=Ð=à€Fàðð ñ „[ðð ð r    r  c                  óB   — e Zd ZdZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚGenz3``gen`` flag to polynomial manipulation functions. rˆ   c                ó   — dS )Nr   r   r   s    r   r   zGen.default±  s   € àˆqr    c                ó\   — t          |t          t          f¦  «        r|S t          d¦  «        ‚)Nz!invalid argument for 'gen' option)r‰   r   rÑ   r	   )r   rˆ   s     r   r"   zGen.preprocessµ  s-   € å�c�E¥3˜<Ñ(Ô(ð 	CØˆJåÐAÑBÔBÐBr    N©r'   r(   r)   r*   r   r-   r   r"   r   r    r   r  r  ¬  sX   € € € € € Ø=Ð=à€Fàðð ñ „[ðð ðCð Cñ „[ðCð Cð Cr    r  c                  ó,   — e Zd ZdZdZed„ ¦   «         ZdS )ÚSeriesz6``series`` flag to polynomial manipulation functions. Úseriesc                ó   — dS rx   r   r   s    r   r   zSeries.defaultÂ  r  r    Nrü   r   r    r   r  r  ½  r  r    r  c                  óB   — e Zd ZdZdZed„ ¦   «         Zed„ ¦   «         ZdS )ÚSymbolsz7``symbols`` flag to polynomial manipulation functions. rã   c                ó$   — t          dd¬¦  «        S )NÚsr„   )Ústart)r   r   s    r   r   zSymbols.defaultÌ  s   € å ¨1Ð-Ñ-Ô-Ð-r    c                ód   — t          |d¦  «        rt          |¦  «        S t          d|z  ¦  «        ‚)Nrï   z2expected an iterator or iterable container, got %s)r™   Úiterr	   )r   rã   s     r   r"   zSymbols.preprocessÐ  s6   € å�7˜JÑ'Ô'ð 	^Ý˜‘=”=Ð åÐRÐU\Ñ\Ñ]Ô]Ð]r    Nr  r   r    r   r   r   Ç  sX   € € € € € ØAÐAà€Fàð.ð .ñ „[ð.ð ð^ð ^ñ „[ð^ð ^ð ^r    r   c                  ó,   — e Zd ZdZdZed„ ¦   «         ZdS )ÚMethodz6``method`` flag to polynomial manipulation functions. Úmethodc                óx   — t          |t          ¦  «        r|                     ¦   «         S t          d|z  ¦  «        ‚)Nzexpected a string, got %s)r‰   r‹   Úlowerr	   )r   r(  s     r   r"   zMethod.preprocessÝ  s7   € å�f�cÑ"Ô"ð 	DØ—<’<‘>”>Ð!åÐ9¸FÑBÑCÔCÐCr    N)r'   r(   r)   r*   r   r-   r"   r   r    r   r'  r'  Ø  s=   € € € € € Ø@Ð@à€FàðDð Dñ „[ðDð Dð Dr    r'  c                óp   — |€d| }} t          |¦  «        dk    sd|vs| rt          | |¦  «        S |d         S )z9Construct options from keyword arguments or ... options. Nr   r„   Úopt)rŠ   r   )rD   r@   s     r   Úbuild_optionsr-  å  sH   € à€|Ø˜ˆdˆå
ˆ4�y„y�A‚~€~˜ dÐ*Ð*¨dÐ*Ý�t˜TÑ"Ô"Ð"à�EŒ{Ðr    c                óî   — t          |¦  «        }|                      ¦   «         D ]P}	 t          j        |         j        r||vrt          d|z  ¦  «        ‚Œ1# t          $ r t          d|z  ¦  «        ‚w xY wdS )aÎ  
    Allow specified flags to be used in the given context.

    Examples
    ========

    >>> from sympy.polys.polyoptions import allowed_flags
    >>> from sympy.polys.domains import ZZ

    >>> allowed_flags({'domain': ZZ}, [])

    >>> allowed_flags({'domain': ZZ, 'frac': True}, [])
    Traceback (most recent call last):
    ...
    FlagError: 'frac' flag is not allowed in this context

    >>> allowed_flags({'domain': ZZ, 'frac': True}, ['frac'])

    rJ   rI   N)r`   rS   r   r?   r,   r
   r:   r	   )r@   rM   Úargs      r   Úallowed_flagsr0  ð  s©   € õ( �‰JŒJ€Eà�yŠy‰{Œ{ð Bð Bˆð	BÝÔ" 3Ô'Ô/ð F°C¸uÐ4DÐ4DÝØ>ÀÑDñFô Fð Føøåð 	Bð 	Bð 	BÝÐ:¸SÑ@ÑAÔAÐAð	BøøøðBð Bs   §-AÁA2c                ó6   — d| vrt          | ¦  «        } || d<   | S )z$Update options with default values. rG   )rP   )r%   rG   s     r   Úset_defaultsr2    s'   € à˜Ð Ð Ý�w‘-”-ˆØ&ˆ�
Ñà€Nr    r   )<r*   Ú
__future__r   Ú__all__Úsympy.core.basicr   Úsympy.core.exprr   Úsympy.core.sympifyr   Úsympy.polys.polyerrorsr   r	   r
   Úsympy.utilitiesr   r   r   Úsympy.utilities.iterablesr   r   Úsympy.polysr©   r›   r   r/   r1   Útyper7   rP   r   r{   r�   r�   rž   r¦   r°   rµ   r¼   rÀ   rå   rê   rì   ró   rø   rú   rþ   r  r  r  r  r  r  r  r   r'  r-  r0  r2  rh   r   r    r   ú<module>r=     sD  ðØ DÐ Dà "Ð "Ð "Ð "Ð "Ð "àˆ+€à "Ð "Ð "Ð "Ð "Ð "Ø  Ð  Ð  Ð  Ð  Ð  Ø &Ð &Ð &Ð &Ð &Ð &Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;à Ð Ð Ð à 	€	€	€	ðð ð ð ð ñ ô ð ð4ð ð ð ð ˆ6ñ ô ð ðgð gð gð gð g�Fñ gô gð gð.ð .ð .ð .ð .�ñ .ô .ð .ð ðrð rð rð rð rˆdñ rô rñ „ðrðj
ð 
ð 
ð 
ð 
ˆ] jð 
ñ 
ô 
ð 
ðð ð ð ð ˆ6˜Zð ñ ô ð ð:Cð Cð Cð Cð Cˆ&˜Jð Cñ Cô Cð Cð6Dð Dð Dð Dð Dˆ6˜Zð Dñ Dô Dð Dð,9ð 9ð 9ð 9ð 9ˆF˜jð 9ñ 9ô 9ð 9ð"/ð /ð /ð /ð /ˆM Zð /ñ /ô /ð /ðTð Tð Tð Tð Tˆ] jð Tñ Tô Tð Tð
Tð 
Tð 
Tð 
Tð 
T�¨ð 
Tñ 
Tô 
Tð 
Tðpdð pdð pdð pdð pdˆV˜zð pdñ pdô pdð pdðfOð Oð Oð Oð OˆM Zð Oñ Oô Oð Oð+ð +ð +ð +ð +ˆ}¨
ð +ñ +ô +ð +ð 'ð 'ð 'ð 'ð '� *ð 'ñ 'ô 'ð 'ðBKð Kð Kð Kð Kˆf 
ð Kñ Kô Kð Kð4Fð Fð Fð Fð F�¨ð Fñ Fô Fð Fðð ð ð ð ˆ] jð ñ ô ð ð$ð $ð $ð $ð $ˆ=˜$¨*ð $ñ $ô $ð $ð"ð ð ð ð ˆ=˜$¨*ð ñ ô ð ðð ð ð ð ˆ]˜D¨Jð ñ ô ð ðð ð ð ð ˆM˜4¨:ð ñ ô ð ðð ð ð ð ˆm˜T¨Zð ñ ô ð ðð ð ð ð ˆ-˜¨ð ñ ô ð ðCð Cð Cð Cð Cˆ$˜*ð Cñ Cô Cð Cð"ð ð ð ð ˆ]˜D¨Jð ñ ô ð ð^ð ^ð ^ð ^ð ^ˆd˜jð ^ñ ^ô ^ð ^ð"
Dð 
Dð 
Dð 
Dð 
DˆT˜Zð 
Dñ 
Dô 
Dð 
Dðð ð ð ðBð Bð Bð>ð ð ð ×  Ò  Ñ "Ô "Ð "Ð "Ð "r    