Ë
    O/æj¦T  ã                  ó´  — d Z ddlmZ dgZddlmZ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-„ d.ee¬«      Z) G d/„ d0ee¬«      Z* G d1„ d2eee¬«      Z+ G d3„ d4eee¬«      Z, G d5„ d6eee¬«      Z- G d7„ d8eee¬«      Z. G d9„ d:eee¬«      Z/ G d;„ d<eee¬«      Z0 G d=„ d>ee¬«      Z1 G d?„ d@eee¬«      Z2 G dA„ dBee¬«      Z3 G dC„ dDee¬«      Z4dHdE„Z5dF„ Z6dG„ Z7ejq                  «        y)Iz>Options manager for :class:`~.Poly` and public API functions. é    )ÚannotationsÚOptions)ÚBasicÚ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y)ÚOptionz%Base class for all kinds of options. Nz
str | NoneÚoptionFú	list[str]ÚrequiresÚexcludesÚafterÚbeforec                 ó   — y ©N© ©Úclss    úZ/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/polys/polyoptions.pyÚdefaultzOption.default   ó   € àó    c                 ó   — y r   r   )r   r   s     r   Ú
preprocesszOption.preprocess!   r   r   c                 ó   — y 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      sv   … Ù/à€FˆJÓà€Gà€HˆiÓØ€HˆiÓà€Eˆ9ÓØ€FˆIÓàñó ðð ñó ðð ñó ñr   r   c                  ó   — e Zd ZdZdZy)ÚFlagz#Base class for all kinds of flags. TN)r&   r'   r(   r)   r+   r   r   r   r.   r.   *   s
   „ Ù-à�Gr   r.   c                  ó    — e Zd ZdZed„ «       Zy)ÚBooleanOptionzAAn option that must have a boolean value or equivalent assigned. c                óV   — |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.preprocess3   s,   € à�MÑ!Ü˜“;ÐåÐSV×S]ÓS]Ñ_dÐeÓfÐfr   N)r&   r'   r(   r)   r,   r!   r   r   r   r0   r0   0   s   „ ÙKàñgó ñgr   r0   c                  ó   — e Zd ZdZd„ Zy)Ú
OptionTypez7Base type for all options that does registers options. c                ó’   ‡ — t         ˆ fd„«       }t        t        ‰ j                  |«       ‰ t        j                  ‰ j                  <   y )Nc                ób   •— 	 | ‰j                      S # t        $ r ‰j                  «       cY S w xY wr   )r   ÚKeyErrorr   )Úselfr   s    €r   Úgetterz#OptionType.__init__.<locals>.getter?   s2   ø€ ð%Ø˜CŸJ™JÑ'Ð'øÜò %Ø—{‘{“}Ò$ð%ús   ƒ ’.­.)ÚpropertyÚsetattrr   r   Ú__options__)r   ÚargsÚkwargsr;   s   `   r   Ú__init__zOptionType.__init__>   s;   ø€ Ü	ó	%ó 
ð	%ô 	”˜Ÿ™ VÔ,Ø*-Œ×Ñ˜CŸJ™JÒ'r   N)r&   r'   r(   r)   rA   r   r   r   r6   r6   ;   s
   „ ÙAó	.r   r6   c                  óˆ   ‡ — e Zd ZU dZdZi Z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>   c           	     óü  ‡ ‡‡— t         j                  ‰ «       |r|j                  dd«      rt        d«      ‚|rt        |«      }||d<   |j	                  di «      }ˆˆ ˆfd„} ||«       t        |«      D ]A  }|‰ v r||= Œ‰ j                  «       D ]$  }‰ j                  |   }	||	j                  v sŒ!||=  ŒA ŒC  ||«       ‰ j                  «       D ]y  }‰ j                  |   }	|	j                  D ]%  }
‰ j                  |
«      �Œt        d|›d|
›d�«      ‚ |	j                  D ]%  }‰ j                  |«      €Œt        d|›d|›d�«      ‚ Œ{ ‰ j                  D ]   }‰ j                  |   j                  ‰ «       Œ" y )	NÚgensr   z1both '*gens' and keyword argument 'gens' suppliedÚdefaultsc                ó  •— | j                  «       D ]R  \  }}	 ‰j                  |   }t	        |t
        «      r‰�|‰vr‰rt        d|z  «      ‚|€Œ?|j                  |«      ‰|<   ŒT y # t        $ r t        d|z  «      ‚w xY w)Nú'%s' is not a valid optionú('%s' flag is not allowed in this context)Úitemsr>   r9   r   Ú
issubclassr.   r!   )r?   r   r4   r   Úflagsr:   Ústricts       €€€r   Úpreprocess_optionsz,Options.__init__.<locals>.preprocess_optionsŠ   s›   ø€ Ø!%§¡£ò 9‘�˜ðMØ×*Ñ*¨6Ñ2�Cô ˜c¤4Ô(Ø�}¨°eÑ(;Ù!Ü"-Ð.XÐ[aÑ.aÓ"bÐbàÑ$Ø#&§>¡>°%Ó#8�D˜’Lñ9øô  ò MÜ%Ð&BÀVÑ&KÓLÐLðMús   ™A(Á(B r2   z(' option is only allowed together with 'z'' option is not allowed together with ')ÚdictrA   Úgetr   ÚpopÚkeysr>   r   r   Ú	__order__r%   )r:   rD   r?   rK   rL   rE   rM   Úkeyr   r   Úrequire_optionÚexclude_options   `  ``       r   rA   zOptions.__init__~   sŽ  ú€ Ü�‰�dÔá�D—H‘H˜V RÔ(ÜØCóEð EáÜ˜“:ˆDØˆD�‰Là—8‘8˜J¨Ó+ˆö	9ñ 	˜4Ô ä˜“>ò 		ˆCØ�d‰{Ø˜S‘Mà"Ÿi™i›kò �FØ×*Ñ*¨6Ñ2�Cà˜cŸl™lÒ*Ø$ S˜MÙñð			ñ 	˜8Ô$à—i‘i“kò 		rˆFØ×"Ñ" 6Ñ*ˆCà"%§,¡,ò s�Ø—8‘8˜NÓ+Ñ3Ý%ÒZ`ÒbpÐ&qÓrÐrðsð #&§,¡,ò r�Ø—8‘8˜NÓ+Ñ7Ý%ÒY_ÒaoÐ&pÓqÐqñrð		rð —n‘nò 	7ˆFØ×Ñ˜VÑ$×0Ñ0°Õ6ñ	7r   c                ó–  ‡— | j                   €¤g t        «       }}| j                  j                  «       D ]^  \  Š}|j	                  ‰«       |j                  ˆfd„|j                  D «       «       |j                  ˆfd„|j                  D «       «       Œ` 	 t        |t        |«      f«      | _         yy# t        $ r t        d«      ‚w xY w)z*Resolve the order of options' processing. Nc              3  ó&   •K  — | ]  }|‰f–— Œ
 y ­wr   r   ©Ú.0Ú_nameÚnames     €r   ú	<genexpr>z3Options._init_dependencies_order.<locals>.<genexpr>¿   s   øè ø€ ÒE¨u˜e Tœ]ÑEùó   ƒc              3  ó&   •K  — | ]  }‰|f–— Œ
 y ­wr   r   rX   s     €r   r\   z3Options._init_dependencies_order.<locals>.<genexpr>Á   s   øè ø€ ÒF¨u˜d Eœ]ÑFùr]   z/cycle detected in sympy.polys options framework)rR   Úsetr>   rI   Ú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ò G‘��fØ—‘ Ô%à—‘ÓE¸¿¹ÔEÔEà—‘ÓF¸¿¹ÔFÕFðGðGÜ 0°(¼DÀ»KÐ1HÓ I�•ð !øô ò GÜ"ØEóGð GðGús   ÂB3 Â3Cc                ó¸   — t         j                  | j                  «      }| j                  «       D ]
  \  }}|||<   Œ |j                  «       D ]
  \  }}|||<   Œ |S )z-Clone ``self`` and update specified options. )rN   Ú__new__Ú	__class__rI   )r:   ÚupdatesÚobjr   r4   s        r   ÚclonezOptions.cloneÉ   sa   € ä�l‰l˜4Ÿ>™>Ó*ˆà!ŸZ™Z›\ò 	 ‰MˆF�EØˆC�ŠKð	 ð %Ÿ]™]›_ò 	 ‰MˆF�EØˆC�ŠKð	 ð ˆ
r   c                óN   •— || j                   v r|| |<   y t        ‰| �	  ||«       y r   )r>   ÚsuperÚ__setattr__)r:   Úattrr4   rj   s      €r   rp   zOptions.__setattr__Õ   s)   ø€ Ø�4×#Ñ#Ñ#ØˆD�ŠJä‰GÑ  eÕ,r   c                ó–   — i }| j                  «       D ]3  \  }}|€Œ	|dk7  sŒ| j                  |   }t        |t        «      rŒ/|||<   Œ5 |S )NrD   )rI   r>   rJ   r.   )r:   r?   r   r4   r   s        r   r?   zOptions.argsÛ   sW   € àˆà!ŸZ™Z›\ò 	)‰MˆF�EØÑ  V¨vÓ%5Ø×&Ñ& vÑ.�ä! #¤tÕ,Ø#(�D˜’Lð	)ð ˆr   c                óŽ   — i }| j                   j                  «       D ]%  \  }}t        |t        «      rŒt	        | |«      ||<   Œ' |S r   ©r>   rI   rJ   r.   Úgetattr)r:   r$   r   r   s       r   r$   zOptions.optionsè   sJ   € àˆà×+Ñ+×1Ñ1Ó3ò 	8‰KˆF�CÜ˜c¤4Õ(Ü")¨$°Ó"7�˜’ð	8ð ˆr   c                óŽ   — i }| j                   j                  «       D ]%  \  }}t        |t        «      sŒt	        | |«      ||<   Œ' |S r   rt   )r:   rK   r   r   s       r   rK   zOptions.flagsò   sJ   € àˆà×+Ñ+×1Ñ1Ó3ò 	6‰KˆF�CÜ˜#œtÕ$Ü '¨¨fÓ 5��f’ð	6ð ˆr   ©NF)r&   r'   r(   r)   rR   r>   r*   rA   r,   rg   rm   rp   r<   r?   r$   rK   Ú__classcell__)rj   s   @r   r   r   J   s‚   ø… ñ-ð^ €IØ+-€KÐ(Ó-ó67ðp ñGó ðGð$ ó 
ô-ð ñ
ó ð
ð ñó ðð ñó ôr   c                  óB   — e Zd ZU dZdZg Zded<   g Zded<   ed„ «       Z	y)ÚExpandz8``expand`` option to polynomial manipulation functions. Úexpandr   r   r   c                 ó   — y©NTr   r   s    r   r   zExpand.default  r   r   N)
r&   r'   r(   r)   r   r   r*   r   r,   r   r   r   r   rz   rz   ý   s0   … ÙBà€Fà€HˆiÓØ€HˆiÓàñó ñr   rz   )Ú	metaclassc                  óR   — 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
y)	ÚGensz6``gens`` option to polynomial manipulation functions. rD   r   r   r   c                 ó   — y)Nr   r   r   s    r   r   zGens.default  s   € àr   c                ó<  — t        |t        «      r|f}n!t        |«      dk(  rt        |d   «      r|d   }|dk(  rd}t        |«      S t	        |«      rt        dt        |«      z  «      ‚t        d„ |D «       «      rt        dt        |«      z  «      ‚t        |«      S )Né   r   r   r   zduplicated generators: %sc              3  ó8   K  — | ]  }|j                   d u –— Œ y­w)FN)Úis_commutative)rY   Úgens     r   r\   z"Gens.preprocess.<locals>.<genexpr>!  s   è ø€ Ò=°�×#Ñ# uÔ,Ñ=ùs   ‚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Ü�‹Y˜!Š^¤¨D°©GÔ 4Ø˜‘7ˆDà�7Š?ØˆDô �T‹{Ðô �dŒ^Ü!Ð"=ÄÀDÃ	Ñ"IÓJÐJÜÑ=¸Ô=Ô=Ü!Ð"BÄSÈÃYÑ"NÓOÐOä�T‹{Ðr   N©r&   r'   r(   r)   r   r   r*   r   r,   r   r!   r   r   r   r€   r€   
  sD   … Ù@à€Fà€HˆiÓØ€HˆiÓàñó ðð ñó ñr   r€   c                  óf   — 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y)	ÚWrtz5``wrt`` option to polynomial manipulation functions. Úwrtr   r   r   z\s*,\s*|\s+c                ób  — t        |t        «      rt        |«      gS t        |t        «      rT|j                  «       }|j	                  d«      rt        d«      ‚|sg S t        | j                  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   rb   Ú	_re_splitÚsplitÚhasattrÚmap)r   r�   s     r   r!   zWrt.preprocess1  sŽ   € ä�cœ5Ô!Ü˜“H�:ÐÜ˜œSÔ!Ø—)‘)“+ˆCØ�|‰|˜CÔ Ü!Ð"AÓBÐBÙØ�	Ü˜Ÿ™×+Ñ+¨CÓ0Ó1Ð1Ü�S˜-Ô(ÜœœC ›Ó&Ð&äÐAÓBÐBr   N)r&   r'   r(   r)   r   r   r*   r   ÚreÚcompiler•   r,   r!   r   r   r   rŽ   rŽ   '  sB   … Ù?à€Fà€HˆiÓØ€HˆiÓà�—
‘
˜>Ó*€IàñCó ñCr   rŽ   c                  óR   — 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
y)	ÚSortz6``sort`` option to polynomial manipulation functions. Úsortr   r   r   c                ó   — g S r   r   r   s    r   r   zSort.defaultJ  s   € àˆ	r   c                óæ   — t        |t        «      r-|j                  d«      D �cg c]  }|j                  «       ‘Œ c}S t	        |d«      rt        t        t        |«      «      S t        d«      ‚c c}w )Nú>r’   z"invalid argument for 'sort' option)r‡   r‰   r–   r“   r—   rb   r˜   r   )r   r�   r†   s      r   r!   zSort.preprocessN  sW   € ä�dœCÔ Ø,0¯J©J°s«OÖ= S�S—Y‘Y•[Ò=Ð=Ü�T˜=Ô)ÜœœC ›Ó'Ð'äÐBÓCÐCùò	 >s   ¤A.NrŒ   r   r   r   rœ   rœ   B  sF   … Ù@à€Fà€HˆiÓØ€HˆiÓàñó ðð ñDó ñDr   rœ   c                  óR   — 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
y)	ÚOrderz7``order`` option to polynomial manipulation functions. Úorderr   r   r   c                óJ   — t         j                  j                  j                  S r   )ÚsympyÚpolysÚ	orderingsÚlexr   s    r   r   zOrder.default`  s   € ä�{‰{×$Ñ$×(Ñ(Ð(r   c                óT   — t         j                  j                  j                  |«      S r   )r¥   r¦   r§   Úmonomial_key)r   r£   s     r   r!   zOrder.preprocessd  s   € ä�{‰{×$Ñ$×1Ñ1°%Ó8Ð8r   NrŒ   r   r   r   r¢   r¢   X  sD   … ÙAà€Fà€HˆiÓØ€HˆiÓàñ)ó ð)ð ñ9ó ñ9r   r¢   c                  ó,   — e Zd ZU dZdZg Zded<   g d¢Zy)ÚFieldz7``field`` option to polynomial manipulation functions. Úfieldr   r   )Údomainr–   ÚgaussianN©r&   r'   r(   r)   r   r   r*   r   r   r   r   r¬   r¬   i  s   … ÙAà€Fà€HˆiÓÚ.�Hr   r¬   c                  ó,   — e Zd ZU dZdZg Zded<   g d¢Zy)ÚGreedyz8``greedy`` option to polynomial manipulation functions. Úgreedyr   r   ©r®   r–   r¯   Ú	extensionÚmodulusÚ	symmetricNr°   r   r   r   r²   r²   r  s   … ÙBà€Fà€HˆiÓÚS�Hr   r²   c                  ó<   — e Zd ZU dZdZed„ «       Zg Zded<   g d¢Z	y)Ú	Compositez;``composite`` option to polynomial manipulation functions. Ú	compositec                 ó   — y 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¹   {  s-   … ÙEà€Fàñó ðð €HˆiÓÚS�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y)ÚDomainz8``domain`` option to polynomial manipulation functions. r®   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                óô
  — t        |t        j                  j                  j                  «      r|S t        |d«      r|j                  «       S t        |t        «      �r|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                  j                  |«      }|�l|j                  «       \  }}}|€$t        j                  j                  j                   S t        j                  j                  j#                  t%        |«      «      S | j&                  j                  |«      }|�l|j                  «       \  }}}|€$t        j                  j                  j(                  S t        j                  j                  j+                  t%        |«      «      S | j,                  j                  |«      }|�Ct        j                  j                  j/                  t%        |j                  «       d   «      «      S | j0                  j                  |«      }|��q|j                  «       \  }}t3        t5        t6        |j9                  d«      «      «      }|dv r0t        j                  j                  j                  j:                  |Ž S |dv r0t        j                  j                  j                  j:                  |Ž S |d	v r0t        j                  j                  j                   j:                  |Ž S |dk(  r0t        j                  j                  j                  j:                  |Ž S |dk(  r0t        j                  j                  j                  j:                  |Ž S t        j                  j                  j(                  j:                  |Ž S | j<                  j                  |«      }|�Ÿ|j                  «       \  }}t3        t5        t6        |j9                  d«      «      «      }|dv r0t        j                  j                  j                  j>                  |Ž S t        j                  j                  j                  j>                  |Ž S | j@                  j                  |«      }|�it3        t5        t6        |j                  «       d   j9                  d«      «      «      }t        j                  j                  j                  jB                  |Ž 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_polynomialrb   r˜   r   r–   Ú	poly_ringÚ_re_fractionÚ
frac_fieldÚ_re_algebraicÚalgebraic_fieldr   )r   r®   ÚrÚ_ÚprecÚgroundrD   s          r   r!   zDomain.preprocess™  s  € ä�fœeŸk™k×1Ñ1×8Ñ8Ô9ØˆMÜ�V˜[Ô)Ø×#Ñ#Ó%Ð%Ü˜¤Õ$Ø˜Ñ$Ü—{‘{×*Ñ*×-Ñ-Ð-à˜Ñ$Ü—{‘{×*Ñ*×-Ñ-Ð-à˜ÒÜ—{‘{×*Ñ*×/Ñ/Ð/à˜ÒÜ—{‘{×*Ñ*×/Ñ/Ð/à˜Š~Ü—{‘{×*Ñ*×-Ñ-Ð-à×!Ñ!×'Ñ'¨Ó/ˆAàˆ}ØŸX™X›Z‘
��1�dà�<Ü Ÿ;™;×.Ñ.×1Ñ1Ð1ä Ÿ;™;×.Ñ.×8Ñ8¼¸T»ÓCÐCà×$Ñ$×*Ñ*¨6Ó2ˆAàˆ}ØŸX™X›Z‘
��1�dà�<Ü Ÿ;™;×.Ñ.×1Ñ1Ð1ä Ÿ;™;×.Ñ.×;Ñ;¼CÀ»IÓFÐFà×#Ñ#×)Ñ)¨&Ó1ˆAàˆ}Ü—{‘{×*Ñ*×-Ñ-¬c°!·(±(³*¸Q±-Ó.@ÓAÐAà×"Ñ"×(Ñ(¨Ó0ˆAà‰}Ø Ÿx™x›z‘�˜äœC¤¨¯©°C«Ó9Ó:�à˜[Ñ(Ü Ÿ;™;×.Ñ.×1Ñ1×;Ñ;¸TÐBÐBØ˜{Ñ*Ü Ÿ;™;×.Ñ.×1Ñ1×;Ñ;¸TÐBÐBØ˜{Ñ*Ü Ÿ;™;×.Ñ.×1Ñ1×;Ñ;¸TÐBÐBØ˜vÒ%Ü Ÿ;™;×.Ñ.×3Ñ3×=Ñ=¸tÐDÐDØ˜vÒ%Ü Ÿ;™;×.Ñ.×3Ñ3×=Ñ=¸tÐDÐDä Ÿ;™;×.Ñ.×1Ñ1×;Ñ;¸TÐBÐBà× Ñ ×&Ñ& vÓ.ˆAàˆ}Ø Ÿx™x›z‘�˜äœC¤¨¯©°C«Ó9Ó:�à˜[Ñ(Ü Ÿ;™;×.Ñ.×1Ñ1×<Ñ<¸dÐCÐCä Ÿ;™;×.Ñ.×1Ñ1×<Ñ<¸dÐCÐCà×!Ñ!×'Ñ'¨Ó/ˆAàˆ}ÜœC¤¨¯©«°A©×)<Ñ)<¸SÓ)AÓBÓC�Ü—{‘{×*Ñ*×-Ñ-×=Ñ=¸tÐDÐDäÐIÈFÑRÓSÐSr   c                ó  — d|v rEd|v rA|d   j                   r2t        |d   j                  «      t        |d   «      z  rt        d«      ‚d|vs|d   s;d|v r6|d   t        j
                  j                  j                  k(  rt        d«      ‚y y y )NrD   r®   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¸ÀÑ9J×9WÒ9WÜ�W˜XÑ&×.Ñ.Ó/´#°g¸f±oÓ2FÒFÜ!ØAóCð Cà˜GÑ#¨7°6ª?Ø˜GÑ#¨°Ñ(9¼U¿[¹[×=PÑ=P×=SÑ=SÒ(SÜ!Ð"bÓcÐcð )TÐ#ð ,;r   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à€Fà€HˆiÓÚD€HàˆH€Eà�B—J‘JÐ3Ó4€MØ!�r—z‘zÐ"6Ó7ÐØ �b—j‘jÐ!6Ó7€OØ�R—Z‘ZÐ LÓM€NØ�2—:‘:Ð6Ó7€LØ�B—J‘JÐ2Ó3€MàñTTó ðTTðl ñdó ñdr   r½   c                  ó<   — e Zd ZU dZdZg Zded<   g d¢Zed„ «       Z	y)ÚSplitz7``split`` option to polynomial manipulation functions. r–   r   r   )r­   r³   r®   r¯   rµ   r¶   r·   c                ó"   — d|v rt        d«      ‚y )Nr–   z%'split' option is not implemented yet)ÚNotImplementedErrorr#   s     r   r%   zSplit.postprocess  s   € à�gÑÜ%Ð&MÓNÐNð r   N©
r&   r'   r(   r)   r   r   r*   r   r,   r%   r   r   r   râ   râ   û  s1   … ÙAà€Fà€HˆiÓò €Hð ñOó ñOr   râ   c                  ó<   — e Zd ZU dZdZg Zded<   g d¢Zed„ «       Z	y)ÚGaussianz:``gaussian`` option to polynomial manipulation functions. r¯   r   r   )r­   r³   r®   r–   rµ   r¶   r·   c                ó–   — d|v rE|d   du r=t         j                  j                  j                  |d<   t        j                  |«       y y y )Nr¯   Tr®   )r¥   r¦   rÉ   rÅ   Ú	Extensionr%   r#   s     r   r%   zGaussian.postprocess  sG   € à˜Ñ  W¨ZÑ%8¸DÑ%@Ü %§¡× 3Ñ 3× 8Ñ 8ˆG�HÑÜ×!Ñ! 'Õ*ð &AÐ r   Nrå   r   r   r   rç   rç   
  s/   … ÙDà€Fà€HˆiÓò €Hð ñ+ó ñ+r   rç   c                  óL   — e Zd ZU dZdZg Zded<   g d¢Zed„ «       Z	ed„ «       Z
y)	ré   z;``extension`` option to polynomial manipulation functions. rµ   r   r   )r³   r®   r–   r¯   r¶   r·   c                óŠ   — |dk(  rt        |«      S |dk(  rt        d«      ‚t        |d«      s|h}|S |sd }|S t        |«      }|S )Nrƒ   r   z.'False' is an invalid argument for 'extension'Ú__iter__)r3   r   r—   r_   )r   rµ   s     r   r!   zExtension.preprocess#  sb   € à˜Š>Ü˜	“?Ð"Ø˜!Š^ÜÐNÓOÐOä˜9 jÔ1Ø&˜K�	ð Ðñ !Ø $�Ið Ðô !$ I£�IàÐr   c                óŠ   — d|v r?|d   dur7t        j                  j                  j                  j                  |d   Ž |d<   y y y )Nrµ   Tr®   )r¥   r¦   rÉ   rÃ   rÙ   r#   s     r   r%   zExtension.postprocess4  sL   € à˜'Ñ! g¨kÑ&:À$Ñ&FÜ %§¡× 3Ñ 3× 6Ñ 6× FÑ FØ˜Ñ%ð!'ˆG�HÒð 'GÐ!r   N©r&   r'   r(   r)   r   r   r*   r   r,   r!   r%   r   r   r   ré   ré     sC   … ÙEà€Fà€HˆiÓò€Hð ñó ðð  ñ'ó ñ'r   ré   c                  óL   — e Zd ZU dZdZg Zded<   g d¢Zed„ «       Z	ed„ «       Z
y)	ÚModulusz9``modulus`` option to polynomial manipulation functions. r¶   r   r   )r³   r–   r®   r¯   rµ   c                ól   — t        |«      }|j                  r|dkD  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.preprocessC  s<   € ä˜'Ó"ˆà×Ò '¨A¢+Ü�w“<ÐäØ;¸gÑEóGð Gr   c                ó–   — d|v rE|d   }|j                  dd«      }t        j                  j                  j	                  ||«      |d<   y y )Nr¶   r·   Tr®   )rO   r¥   r¦   rÉ   rÓ   )r   r$   r¶   r·   s       r   r%   zModulus.postprocessM  sJ   € à˜ÑØ˜iÑ(ˆGØŸ™ K°Ó6ˆIÜ %§¡× 3Ñ 3× 6Ñ 6°wÀ	Ó JˆG�HÒð  r   Nrî   r   r   r   rð   rð   ;  sC   … ÙCà€Fà€HˆiÓÚE€HàñGó ðGð ñKó ñKr   rð   c                  ó"   — e Zd ZdZdZdgZg d¢Zy)Ú	Symmetricz;``symmetric`` option to polynomial manipulation functions. r·   r¶   )r³   r®   r–   r¯   rµ   N)r&   r'   r(   r)   r   r   r   r   r   r   rõ   rõ   U  s   „ ÙEà€Fàˆ{€HÚE�Hr   rõ   c                  ó$   — e Zd ZdZdZed„ «       Zy)ÚStrictz8``strict`` option to polynomial manipulation functions. rL   c                 ó   — yr}   r   r   s    r   r   zStrict.defaultc  r   r   N©r&   r'   r(   r)   r   r,   r   r   r   r   r÷   r÷   ^  s   „ ÙBà€Fàñó ñr   r÷   c                  ó<   — e Zd ZdZdZg d¢Zed„ «       Zed„ «       Zy)ÚAutoz4``auto`` flag to polynomial manipulation functions. Úauto)r­   r®   rµ   r¯   c                 ó   — yr}   r   r   s    r   r   zAuto.defaulto  r   r   c                ó*   — d|v sd|v rd|vrd|d<   y y y )Nr®   r­   rü   Fr   r#   s     r   r%   zAuto.postprocesss  s*   € à˜Ñ 7¨gÑ#5¸6ÈÑ;PØ#ˆG�FŠOð <QÐ#5r   N)	r&   r'   r(   r)   r   r   r,   r   r%   r   r   r   rû   rû   h  s5   „ Ù>à€Fâ8€Eàñó ðð ñ$ó ñ$r   rû   c                  ó$   — e Zd ZdZdZed„ «       Zy)ÚFracz6``auto`` option to polynomial manipulation functions. Úfracc                 ó   — yrw   r   r   s    r   r   zFrac.default~  ó   € àr   Nrù   r   r   r   r   r   y  s   „ Ù@à€Fàñó ñr   r   c                  ó$   — e Zd ZdZdZed„ «       Zy)ÚFormalz6``formal`` flag to polynomial manipulation functions. Úformalc                 ó   — yrw   r   r   s    r   r   zFormal.defaultˆ  r  r   Nrù   r   r   r   r  r  ƒ  ó   „ Ù@à€Fàñó ñr   r  c                  ó   — e Zd ZdZdZy)ÚPolysz5``polys`` flag to polynomial manipulation functions. r¦   N)r&   r'   r(   r)   r   r   r   r   r
  r
  �  s
   „ Ù?à�Fr   r
  c                  ó$   — e Zd ZdZdZed„ «       Zy)ÚIncludez7``include`` flag to polynomial manipulation functions. Úincludec                 ó   — yrw   r   r   s    r   r   zInclude.default˜  r  r   Nrù   r   r   r   r  r  “  s   „ ÙAà€Fàñó ñr   r  c                  ó$   — e Zd ZdZdZed„ «       Zy)ÚAllz3``all`` flag to polynomial manipulation functions. Úallc                 ó   — yrw   r   r   s    r   r   zAll.default¢  r  r   Nrù   r   r   r   r  r  �  s   „ Ù=à€Fàñó ñr   r  c                  ó4   — e Zd ZdZdZed„ «       Zed„ «       Zy)ÚGenz3``gen`` flag to polynomial manipulation functions. r†   c                 ó   — y)Nr   r   r   s    r   r   zGen.default¬  s   € àr   c                óH   — 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˜<Ô(ØˆJäÐAÓBÐBr   N©r&   r'   r(   r)   r   r,   r   r!   r   r   r   r  r  §  s2   „ Ù=à€Fàñó ðð ñCó ñCr   r  c                  ó$   — e Zd ZdZdZed„ «       Zy)ÚSeriesz6``series`` flag to polynomial manipulation functions. Úseriesc                 ó   — yrw   r   r   s    r   r   zSeries.default½  r  r   Nrù   r   r   r   r  r  ¸  r  r   r  c                  ó4   — e Zd ZdZdZed„ «       Zed„ «       Zy)Ú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                óL   — 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Ë  s(   € ä�7˜JÔ'Ü˜“=Ð äÐRÐU\Ñ\Ó]Ð]r   Nr  r   r   r   r  r  Â  s2   „ ÙAà€Fàñ.ó ð.ð ñ^ó ñ^r   r  c                  ó$   — e Zd ZdZdZed„ «       Zy)ÚMethodz6``method`` flag to polynomial manipulation functions. Úmethodc                ó^   — t        |t        «      r|j                  «       S t        d|z  «      ‚)Nzexpected a string, got %s)r‡   r‰   Úlowerr   )r   r%  s     r   r!   zMethod.preprocessØ  s)   € ä�fœcÔ"Ø—<‘<“>Ð!äÐ9¸FÑBÓCÐCr   N)r&   r'   r(   r)   r   r,   r!   r   r   r   r$  r$  Ó  s   „ Ù@à€FàñDó ñDr   r$  c                óX   — |€d| }} t        |«      dk7  sd|vs| rt        | |«      S |d   S )z9Construct options from keyword arguments or ... options. r   rƒ   Úopt)rˆ   r   )rD   r?   s     r   Úbuild_optionsr*  à  s;   € à€|Ø˜ˆdˆä
ˆ4ƒy�A‚~˜ dÑ*©dÜ�t˜TÓ"Ð"à�E‰{Ðr   c                óÚ   — t        |«      }| j                  «       D ]2  }	 t        j                  |   j                  r||vrt        d|z  «      ‚Œ4 y# t        $ r t        d|z  «      ‚w xY w)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'])

    rH   rG   N)r_   rQ   r   r>   r+   r	   r9   r   )r?   rK   Úargs      r   Úallowed_flagsr-  ë  s�   € ô( �‹J€Eà�y‰y‹{ò Bˆð	BÜ×"Ñ" 3Ñ'×/Ò/°C¸uÑ4DÜØ>ÀÑDóFð FøñBøô
 ò 	BÜÐ:¸SÑ@ÓAÐAð	Bús    /AÁA*c                ó.   — d| vrt        | «      } || d<   | S )z$Update options with default values. rE   )rN   )r$   rE   s     r   Úset_defaultsr/  
  s"   € à˜Ñ Ü�w“-ˆØ&ˆ�
Ñà€Nr   r   )9r)   Ú
__future__r   Ú__all__Ú
sympy.corer   r   Úsympy.polys.polyerrorsr   r   r	   Úsympy.utilitiesr
   r   r   Úsympy.utilities.iterablesr   r   Úsympy.polysr¥   r™   r   r.   r0   Útyper6   rN   r   rz   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/  rg   r   r   r   ú<module>r8     s  ðÙ Då "àˆ+€ç %ß JÑ Jß FÑ Fß ;ã ã 	÷ñ ô4ˆ6ô ôg�Fô gô.�ô .ð ôoˆdó oó ðoôd
ˆ] jõ 
ôˆ6˜Zõ ô:Cˆ&˜Jõ Cô6Dˆ6˜Zõ Dô,9ˆF˜jõ 9ô"/ˆM Zõ /ôTˆ] jõ Tô
T�¨õ 
TôpdˆV˜zõ pdôfOˆM Zõ Oô+ˆ}¨
õ +ô '� *õ 'ôBKˆf 
õ Kô4F�¨õ Fôˆ] jõ ô$ˆ=˜$¨*õ $ô"ˆ=˜$¨*õ ôˆ]˜D¨Jõ ôˆM˜4¨:õ ôˆm˜T¨Zõ ôˆ-˜¨õ ôCˆ$˜*õ Cô"ˆ]˜D¨Jõ ô^ˆd˜jõ ^ô"
DˆT˜Zõ 
DóòBò>ð ×  Ñ  Õ "r   