ó
    Š*£h.U  ã                  ó4  • S r SSKJr  S/rSSKJr  SSKJr  SSKJ	r	  SSK
JrJrJr  SSKJrJrJr  SS	KJrJr  SS
KrSS
Kr " S S5      r " S S\5      r " S S\5      r " S S\5      r\ " S S\5      5       r " S S\\S9r " S S\\S9r  " S S\\S9r! " S S\\S9r" " S S\\S9r# " S S \\S9r$ " S! S"\\S9r% " S# S$\\S9r& " S% S&\\S9r' " S' S(\\S9r( " S) S*\\S9r) " S+ S,\\S9r* " S- S.\\S9r+ " S/ S0\\S9r, " S1 S2\\S9r- " S3 S4\\\S9r. " S5 S6\\\S9r/ " S7 S8\\\S9r0 " S9 S:\\\S9r1 " S; S<\\\S9r2 " S= S>\\\S9r3 " S? S@\\S9r4 " SA SB\\\S9r5 " SC SD\\S9r6 " SE SF\\S9r7SJSG jr8SH r9SI r:\Rw                  5         g
)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                  ó”   • \ rS rSr% SrSrS\S'   Sr/ rS\S'   / r	S\S	'   / r
S\S
'   / rS\S'   \S 5       r\S 5       r\S 5       rSrg)ÚOptioné   z%Base class for all kinds of options. Nz
str | NoneÚoptionFú	list[str]ÚrequiresÚexcludesÚafterÚbeforec                ó   • g ©N© ©Úclss    ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/polys/polyoptions.pyÚdefaultÚOption.default   ó   € àó    c                ó   • g r   r   )r   r   s     r   Ú
preprocessÚOption.preprocess#   r!   r"   c                ó   • g r   r   ©r   Úoptionss     r   ÚpostprocessÚOption.postprocess'   s   € àr"   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotations__Úis_Flagr   r   r   r   Úclassmethodr   r$   r)   Ú__static_attributes__r   r"   r   r   r      sv   ‡ Ù/à€FˆJÓà€Gà€HˆiÓØ€HˆiÓà€Eˆ9ÓØ€FˆIÓàñó ðð ñó ðð ñó ór"   r   c                  ó   • \ rS rSrSrSrSrg)ÚFlagé,   z#Base class for all kinds of flags. Tr   N)r+   r,   r-   r.   r/   r1   r3   r   r"   r   r5   r5   ,   s
   † Ù-àƒGr"   r5   c                  ó(   • \ rS rSrSr\S 5       rSrg)ÚBooleanOptioné2   zAAn option that must have a boolean value or equivalent assigned. c                ó^   • US;   a  [        U5      $ [        SU R                  < SU< 35      e)N)TFÚ'z*' must have a boolean value assigned, got )Úboolr	   r   )r   Úvalues     r   r$   ÚBooleanOption.preprocess5   s,   € à�MÓ!Ü˜“;ÐåÐSV×S]ÔS]Ò_dÐeÓfÐfr"   r   N)r+   r,   r-   r.   r/   r2   r$   r3   r   r"   r   r8   r8   2   s   † ÙKàñgó ógr"   r8   c                  ó   • \ rS rSrSrS rSrg)Ú
OptionTypeé=   z7Base type for all options that does registers options. c                ó”   ^ • [         U 4S j5       n[        [        T R                  U5        T [        R                  T R                  '   g )Nc                ód   >•  U TR                      $ ! [         a    TR                  5       s $ f = fr   )r   ÚKeyErrorr   )Úselfr   s    €r   ÚgetterÚ#OptionType.__init__.<locals>.getterA   s2   ø€ ð%Ø˜CŸJ™JÑ'Ð'øÜó %Ø—{‘{“}Ò$ð%ús   ƒ ’/®/)ÚpropertyÚsetattrr   r   Ú__options__)r   ÚargsÚkwargsrF   s   `   r   Ú__init__ÚOptionType.__init__@   s;   ø€ Ü	ô	%ó 
ð	%ô 	”˜Ÿ™ VÔ,Ø*-Œ×Ñ˜CŸJ™JÒ'r"   r   N)r+   r,   r-   r.   r/   rM   r3   r   r"   r   r@   r@   =   s
   † ÙAõ	.r"   r@   c                  óª   ^ • \ rS rSr% SrSr0 rS\S'   S\S'   S\S	'   SS
 jr\	S 5       r
0 4S jrU 4S jr\S 5       r\S 5       r\S 5       rSrU =r$ )r   éL   a¶  
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]]rJ   ztuple[Expr, ...]Úgenszsympy.polys.domains.DomainÚdomainc           	     óD  ^ ^^• [         R                  T 5        U(       a"  UR                  SS5      (       a  [        S5      eU(       a  [        U5      nXS'   UR	                  S0 5      nUU U4S jnU" U5        [        U5       HG  nUT ;   a  XW	 M  T R                  5        H&  nT R                  U   n	XyR                  ;   d  M#  XW	   ME     MI     U" U5        T R                  5        H„  nT R                  U   n	U	R                   H)  n
T R                  U
5      b  M  [        SU< SU
< S35      e   U	R                   H)  nT R                  U5      c  M  [        SU< SU< S35      e   M†     T R                   H!  nT R                  U   R                  T 5        M#     g )	NrQ   r   z1both '*gens' and keyword argument 'gens' suppliedÚdefaultsc                ó(  >• U R                  5        Ha  u  p TR                  U   n[	        U[
        5      (       a  Tb  UT;  a  T(       a  [        SU-  5      eUc  MM  UR                  U5      TU'   Mc     g ! [         a    [        SU-  5      ef = f)Nú'%s' is not a valid optionú('%s' flag is not allowed in this context)ÚitemsrJ   rD   r	   Ú
issubclassr5   r$   )rK   r   r=   r   ÚflagsrE   Ústricts       €€€r   Úpreprocess_optionsÚ,Options.__init__.<locals>.preprocess_options�   s—   ø€ Ø!%§¡¦‘�ðMØ×*Ñ*¨6Ñ2�Cô ˜c¤4×(Ñ(Ø‘}¨°eÓ(;Þ!Ü"-Ð.XÐ[aÑ.aÓ"bÐbàÓ$Ø#&§>¡>°%Ó#8�D˜“Lò ".øô  ó MÜ%Ð&BÀVÑ&KÓLÐLðMús   ˜A8Á8Br;   z(' option is only allowed together with 'z'' option is not allowed together with ')ÚdictrM   Úgetr	   ÚpopÚkeysrJ   r   r   Ú	__order__r)   )rE   rQ   rK   rZ   r[   rT   r\   Úkeyr   r   Úrequire_optionÚexclude_options   `  ``       r   rM   ÚOptions.__init__ƒ   se  ú€ Ü�‰�dÔæ�D—H‘H˜V R×(Ñ(ÜØCóEð EæÜ˜“:ˆDØ�‰Là—8‘8˜J¨Ó+ˆ÷	9ñ 	˜4Ô ä˜–>ˆCØ�d‹{Ø’Mà"Ÿi™ižk�FØ×*Ñ*¨6Ñ2�CàŸl™lÕ*Ø$˜MÚó *ñ	 "ñ 	˜8Ô$à—i‘i–kˆFØ×"Ñ" 6Ñ*ˆCà"%§,¤,�Ø—8‘8˜NÓ+Ó3Ý%ÓZ`ÓbpÐ&qÓrÐrñ #/ð #&§,¤,�Ø—8‘8˜NÓ+Ó7Ý%ÓY_ÓaoÐ&pÓqÐqó #/ñ "ð —n”nˆFØ×Ñ˜VÑ$×0Ñ0°Ö6ò %r"   c                ó   ^• U R                   c§  / [        5       p!U R                  R                  5        Ha  u  mnUR	                  T5        UR                  U4S jUR                   5       5        UR                  U4S jUR                   5       5        Mc      [        U[        U5      45      U l         gg! [         a    [        S5      ef = f)z*Resolve the order of options' processing. Nc              3  ó*   >#   • U  H  oT4v •  M
     g 7fr   r   ©Ú.0Ú_nameÚnames     €r   Ú	<genexpr>Ú3Options._init_dependencies_order.<locals>.<genexpr>Ä   s   øé € ÐEº¨u T�]ºùs   ƒc              3  ó,   >#   • U  H	  nTU4v •  M     g 7fr   r   ri   s     €r   rm   rn   Æ   s   øé € ÐFº¨u˜d E�]ºùs   ƒz/cycle detected in sympy.polys options framework)rb   ÚsetrJ   rX   ÚappendÚupdater   r   r   ÚlistÚ
ValueErrorÚRuntimeError)r   ÚverticesÚedgesr   rl   s       @r   Ú_init_dependencies_orderÚ Options._init_dependencies_order»   s°   ø€ ð �=‰=Ñ Ø ¤#£%�eà #§¡× 5Ñ 5Ö 7‘��fØ—‘ Ô%à—‘ÔE¸¿ºÓEÔEà—‘ÔF¸¿ºÓFÖFñ !8ðGÜ 0°(¼DÀ»KÐ1HÓ I�•ð !øô ó GÜ"ØEóGð GðGús   ÂB7 Â7Cc                ó¸   • [         R                  U R                  5      nU R                  5        H	  u  p4XBU'   M     UR                  5        H	  u  p4XBU'   M     U$ )z-Clone ``self`` and update specified options. )r^   Ú__new__Ú	__class__rX   )rE   ÚupdatesÚobjr   r=   s        r   ÚcloneÚOptions.cloneÎ   sO   € ä�l‰l˜4Ÿ>™>Ó*ˆà!ŸZ™Zž\‰MˆFØ�‹Kñ *ð %Ÿ]™]ž_‰MˆFØ�‹Kñ -ð ˆ
r"   c                óL   >• XR                   ;   a  X U'   g [        TU ]	  X5        g r   )rJ   ÚsuperÚ__setattr__)rE   Úattrr=   r|   s      €r   rƒ   ÚOptions.__setattr__Ú   s#   ø€ Ø×#Ñ#Ó#Ø�ŠJä‰GÑ Õ,r"   c                óª   • 0 nU R                  5        H<  u  p#Uc  M
  US:w  d  M  U R                  U   n[        U[        5      (       a  M8  X1U'   M>     U$ )NrQ   )rX   rJ   rY   r5   )rE   rK   r   r=   r   s        r   rK   ÚOptions.argsà   sQ   € àˆà!ŸZ™Zž\‰MˆFØÓ  V¨vÕ%5Ø×&Ñ& vÑ.�ä! #¤t×,Ó,Ø#(˜“Lñ *ð ˆr"   c                ó˜   • 0 nU R                   R                  5        H)  u  p#[        U[        5      (       a  M  [	        X5      X'   M+     U$ r   ©rJ   rX   rY   r5   Úgetattr)rE   r(   r   r   s       r   r(   ÚOptions.optionsí   sB   € àˆà×+Ñ+×1Ñ1Ö3‰KˆFÜ˜c¤4×(Ó(Ü")¨$Ó"7�“ñ 4ð ˆr"   c                ó˜   • 0 nU R                   R                  5        H)  u  p#[        U[        5      (       d  M  [	        X5      X'   M+     U$ r   r‰   )rE   rZ   r   r   s       r   rZ   ÚOptions.flags÷   sB   € àˆà×+Ñ+×1Ñ1Ö3‰KˆFÜ˜#œt×$Ó$Ü '¨Ó 5�“ñ 4ð ˆr"   r   ©NF)r+   r,   r-   r.   r/   rb   rJ   r0   rM   r2   rx   r   rƒ   rH   rK   r(   rZ   r3   Ú__classcell__)r|   s   @r   r   r   L   sŽ   ø‡ ñ-ð^ €IØ+-€KÐ(Ó-à
ÓØ&Ó&ô67ðp ñGó ðGð$ ô 
õ-ð ñ
ó ð
ð ñó ðð ñó ör"   c                  óJ   • \ rS rSr% SrSr/ rS\S'   / rS\S'   \	S 5       r
Srg	)
ÚExpandi  z8``expand`` option to polynomial manipulation functions. Úexpandr   r   r   c                ó   • g©NTr   r   s    r   r   ÚExpand.default
  r!   r"   r   N)r+   r,   r-   r.   r/   r   r   r0   r   r2   r   r3   r   r"   r   r‘   r‘     s0   ‡ ÙBà€Fà€HˆiÓØ€HˆiÓàñó ór"   r‘   )Ú	metaclassc                  óZ   • \ rS rSr% SrSr/ rS\S'   / rS\S'   \	S 5       r
\	S 5       rS	rg
)ÚGensi  z6``gens`` option to polynomial manipulation functions. rQ   r   r   r   c                ó   • g)Nr   r   r   s    r   r   ÚGens.default  s   € àr"   c                óT  • [        U[        5      (       a  U4nO'[        U5      S:X  a  [        US   5      (       a  US   nUS:X  a  SnOU[	        U5      (       a  [        S[        U5      -  5      e[        S U 5       5      (       a  [        S[        U5      -  5      e[        U5      $ )Né   r   r   r   zduplicated generators: %sc              3  ó<   #   • U  H  oR                   S L v •  M     g7f)FN)Úis_commutative)rj   Úgens     r   rm   Ú"Gens.preprocess.<locals>.<genexpr>&  s   é € Ð=º°×#Ñ# uÕ,ºùs   ‚znon-commutative generators: %s)	Ú
isinstancer   Úlenr   r   r   ÚstrÚanyÚtuple)r   rQ   s     r   r$   ÚGens.preprocess  s’   € ä�dœE×"Ñ"Ø�7‰DÜ�‹Y˜!‹^¤¨D°©G× 4Ñ 4Ø˜‘7ˆDà�7‹?Ø‰DÜ�d�^‰^Ü!Ð"=ÄÀDÃ	Ñ"IÓJÐJÜÑ=¹Ó=×=Ñ=Ü!Ð"BÄSÈÃYÑ"NÓOÐOä�T‹{Ðr"   r   N©r+   r,   r-   r.   r/   r   r   r0   r   r2   r   r$   r3   r   r"   r   r˜   r˜     sD   ‡ Ù@à€Fà€HˆiÓØ€HˆiÓàñó ðð ñó ór"   r˜   c                  ón   • \ rS rSr% SrSr/ rS\S'   / rS\S'   \	R                  " S5      r\S 5       rS	rg
)ÚWrti,  z5``wrt`` option to polynomial manipulation functions. Úwrtr   r   r   z\s*,\s*|\s+c                ó”  • [        U[        5      (       a  [        U5      /$ [        U[        5      (       a^  UR                  5       nUR	                  S5      (       a  [        S5      eU(       d  / $ [        U R                  R                  U5      5      $ [        US5      (       a  [        [        [        U5      5      $ [        S5      e)NÚ,zBad input: missing parameter.Ú__getitem__z!invalid argument for 'wrt' option)r¡   r   r£   ÚstripÚendswithr	   rs   Ú	_re_splitÚsplitÚhasattrÚmap)r   rª   s     r   r$   ÚWrt.preprocess6  sš   € ä�cœ5×!Ñ!Ü˜“H�:ÐÜ˜œS×!Ñ!Ø—)‘)“+ˆCØ�|‰|˜C× Ñ Ü!Ð"AÓBÐBÞØ�	Ü˜Ÿ™×+Ñ+¨CÓ0Ó1Ð1Ü�S˜-×(Ñ(ÜœœC ›Ó&Ð&äÐAÓBÐBr"   r   N)r+   r,   r-   r.   r/   r   r   r0   r   ÚreÚcompiler°   r2   r$   r3   r   r"   r   r©   r©   ,  s@   ‡ Ù?à€Fà€HˆiÓØ€HˆiÓà—
’
˜>Ó*€IàñCó óCr"   r©   c                  óZ   • \ rS rSr% SrSr/ rS\S'   / rS\S'   \	S 5       r
\	S 5       rS	rg
)ÚSortiG  z6``sort`` option to polynomial manipulation functions. Úsortr   r   r   c                ó   • / $ r   r   r   s    r   r   ÚSort.defaultO  s   € àˆ	r"   c                óþ   • [        U[        5      (       a/  UR                  S5       Vs/ s H  o"R                  5       PM     sn$ [	        US5      (       a  [        [        [        U5      5      $ [        S5      es  snf )NÚ>r­   z"invalid argument for 'sort' option)r¡   r£   r±   r®   r²   rs   r³   r	   )r   r¹   rŸ   s      r   r$   ÚSort.preprocessS  s_   € ä�dœC× Ñ Ø,0¯J©J°s¬OÓ=ªO S—Y‘Y–[©OÑ=Ð=Ü�T˜=×)Ñ)ÜœœC ›Ó'Ð'äÐBÓCÐCùò	 >s   ©A:r   Nr§   r   r"   r   r¸   r¸   G  sF   ‡ Ù@à€Fà€HˆiÓØ€HˆiÓàñó ðð ñDó óDr"   r¸   c                  óZ   • \ rS rSr% SrSr/ rS\S'   / rS\S'   \	S 5       r
\	S 5       rS	rg
)ÚOrderi]  z7``order`` option to polynomial manipulation functions. Úorderr   r   r   c                óJ   • [         R                  R                  R                  $ r   )ÚsympyÚpolysÚ	orderingsÚlexr   s    r   r   ÚOrder.defaulte  s   € ä�{‰{×$Ñ$×(Ñ(Ð(r"   c                óT   • [         R                  R                  R                  U5      $ r   )rÃ   rÄ   rÅ   Úmonomial_key)r   rÁ   s     r   r$   ÚOrder.preprocessi  s   € ä�{‰{×$Ñ$×1Ñ1°%Ó8Ð8r"   r   Nr§   r   r"   r   rÀ   rÀ   ]  sD   ‡ ÙAà€Fà€HˆiÓØ€HˆiÓàñ)ó ð)ð ñ9ó ó9r"   rÀ   c                  ó4   • \ rS rSr% SrSr/ rS\S'   / SQrSr	g)	ÚFieldin  z7``field`` option to polynomial manipulation functions. Úfieldr   r   )rR   r±   Úgaussianr   N©
r+   r,   r-   r.   r/   r   r   r0   r   r3   r   r"   r   rÌ   rÌ   n  s   ‡ ÙAà€Fà€HˆiÓÚ.ƒHr"   rÌ   c                  ó4   • \ rS rSr% SrSr/ rS\S'   / SQrSr	g)	ÚGreedyiw  z8``greedy`` option to polynomial manipulation functions. Úgreedyr   r   ©rR   r±   rÎ   Ú	extensionÚmodulusÚ	symmetricr   NrÏ   r   r"   r   rÑ   rÑ   w  s   ‡ ÙBà€Fà€HˆiÓÚSƒHr"   rÑ   c                  óD   • \ rS rSr% SrSr\S 5       r/ rS\	S'   / SQr
Srg	)
Ú	Compositei€  z;``composite`` option to polynomial manipulation functions. Ú	compositec                ó   • g r   r   r   s    r   r   ÚComposite.default…  r!   r"   r   r   rÓ   r   N)r+   r,   r-   r.   r/   r   r2   r   r   r0   r   r3   r   r"   r   rØ   rØ   €  s-   ‡ ÙEà€Fàñó ðð €HˆiÓÚSƒHr"   rØ   c                  ó2  • \ rS rSr% SrSr/ rS\S'   / SQrS/r	\
R                  " S5      r\
R                  " S	5      r\
R                  " S
5      r\
R                  " S5      r\
R                  " S5      r\
R                  " S5      r\S 5       r\S 5       rSrg)ÚDomaini�  z8``domain`` option to polynomial manipulation functions. rR   r   r   )rÍ   rÒ   r±   rÎ   rÔ   rQ   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                óN  • [        U[        R                  R                  R                  5      (       a  U$ [        US5      (       a  UR                  5       $ [        U[        5      (       Ga,  US;   a$  [        R                  R                  R                  $ US;   a$  [        R                  R                  R                  $ US:X  a$  [        R                  R                  R                  $ US:X  a$  [        R                  R                  R                  $ US:X  a$  [        R                  R                  R                  $ U R                  R                  U5      nUbl  UR                  5       u    p4Uc$  [        R                  R                  R                   $ [        R                  R                  R#                  [%        U5      5      $ U R&                  R                  U5      nUbl  UR                  5       u    p4Uc$  [        R                  R                  R(                  $ [        R                  R                  R+                  [%        U5      5      $ U R,                  R                  U5      nUbC  [        R                  R                  R/                  [%        UR                  5       S   5      5      $ U R0                  R                  U5      nUGb~  UR                  5       u  pV[3        [5        [6        UR9                  S5      5      5      nUS;   a1  [        R                  R                  R                  R:                  " U6 $ US;   a1  [        R                  R                  R                  R:                  " U6 $ US	;   a1  [        R                  R                  R                   R:                  " U6 $ US:X  a1  [        R                  R                  R                  R:                  " U6 $ US:X  a1  [        R                  R                  R                  R:                  " U6 $ [        R                  R                  R(                  R:                  " U6 $ U R<                  R                  U5      nUb¢  UR                  5       u  pV[3        [5        [6        UR9                  S5      5      5      nUS;   a1  [        R                  R                  R                  R>                  " U6 $ [        R                  R                  R                  R>                  " U6 $ U R@                  R                  U5      nUbj  [3        [5        [6        UR                  5       S   R9                  S5      5      5      n[        R                  R                  R                  RB                  " U6 $ [E        S
U-  5      e)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_polynomialrs   r³   r   r±   Ú	poly_ringÚ_re_fractionÚ
frac_fieldÚ_re_algebraicÚalgebraic_fieldr	   )r   rR   ÚrÚ_ÚprecÚgroundrQ   s          r   r$   ÚDomain.preprocessž  s  € ä�fœeŸk™k×1Ñ1×8Ñ8×9Ñ9ØˆMÜ�V˜[×)Ñ)Ø×#Ñ#Ó%Ð%Ü˜¤×$Ò$Ø˜Ó$Ü—{‘{×*Ñ*×-Ñ-Ð-à˜Ó$Ü—{‘{×*Ñ*×-Ñ-Ð-à˜ÓÜ—{‘{×*Ñ*×/Ñ/Ð/à˜ÓÜ—{‘{×*Ñ*×/Ñ/Ð/à˜‹~Ü—{‘{×*Ñ*×-Ñ-Ð-à×!Ñ!×'Ñ'¨Ó/ˆAà‰}ØŸX™X›Z‘
��1à‘<Ü Ÿ;™;×.Ñ.×1Ñ1Ð1ä Ÿ;™;×.Ñ.×8Ñ8¼¸T»ÓCÐCà×$Ñ$×*Ñ*¨6Ó2ˆAà‰}ØŸX™X›Z‘
��1à‘<Ü Ÿ;™;×.Ñ.×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                óN  • SU;   aQ  SU;   aK  US   R                   (       a7  [        US   R                  5      [        US   5      -  (       a  [        S5      eSU;  d
  US   (       d>  SU;   a7  US   [        R
                  R                  R                  :X  a  [        S5      eg g g )NrQ   rR   z/ground domain and generators interfere togetherz>you have to provide generators because EX domain was requested)Úis_Compositerp   Úsymbolsr   rÃ   rÄ   ré   ræ   r'   s     r   r)   Ú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"   r   N)r+   r,   r-   r.   r/   r   r   r0   r   r   rµ   r¶   rê   rï   rò   rô   rö   rø   r2   r$   r)   r3   r   r"   r   rÝ   rÝ   �  s¨   ‡ ÙBà€Fà€HˆiÓÚD€HàˆH€Eà—J’JÐ3Ó4€MØ—z’zÐ"6Ó7ÐØ—j’jÐ!6Ó7€OØ—Z’ZÐ LÓM€NØ—:’:Ð6Ó7€LØ—J’JÐ2Ó3€MàñTTó ðTTðl ñdó ódr"   rÝ   c                  óD   • \ rS rSr% SrSr/ rS\S'   / SQr\	S 5       r
Srg	)
ÚSpliti   z7``split`` option to polynomial manipulation functions. r±   r   r   )rÍ   rÒ   rR   rÎ   rÔ   rÕ   rÖ   c                ó&   • SU;   a  [        S5      eg )Nr±   z%'split' option is not implemented yet)ÚNotImplementedErrorr'   s     r   r)   ÚSplit.postprocess	  s   € à�gÓÜ%Ð&MÓNÐNð r"   r   N©r+   r,   r-   r.   r/   r   r   r0   r   r2   r)   r3   r   r"   r   r  r     s1   ‡ ÙAà€Fà€HˆiÓò €Hð ñOó óOr"   r  c                  óD   • \ rS rSr% SrSr/ rS\S'   / SQr\	S 5       r
Srg	)
ÚGaussiani  z:``gaussian`` option to polynomial manipulation functions. rÎ   r   r   )rÍ   rÒ   rR   r±   rÔ   rÕ   rÖ   c                óœ   • SU;   aF  US   SL a=  [         R                  R                  R                  US'   [        R                  U5        g g g )NrÎ   TrR   )rÃ   rÄ   ré   rå   Ú	Extensionr)   r'   s     r   r)   ÚGaussian.postprocess  sG   € à˜Ó  W¨ZÑ%8¸DÒ%@Ü %§¡× 3Ñ 3× 8Ñ 8ˆG�HÑÜ×!Ñ! 'Õ*ð &AÐ r"   r   Nr  r   r"   r   r
  r
    s/   ‡ ÙDà€Fà€HˆiÓò €Hð ñ+ó ó+r"   r
  c                  óT   • \ rS rSr% SrSr/ rS\S'   / SQr\	S 5       r
\	S 5       rS	rg
)r  i  z;``extension`` option to polynomial manipulation functions. rÔ   r   r   )rÒ   rR   r±   rÎ   rÕ   rÖ   c                ó¢   • US:X  a  [        U5      $ US:X  a  [        S5      e[        US5      (       d  U1nU$ U(       d  S nU$ [        U5      nU$ )Nrœ   r   z.'False' is an invalid argument for 'extension'Ú__iter__)r<   r	   r²   rp   )r   rÔ   s     r   r$   ÚExtension.preprocess(  se   € à˜‹>Ü˜	“?Ð"Ø˜!‹^ÜÐNÓOÐOä˜9 j×1Ñ1Ø&˜K�	ð Ðö !Ø $�Ið Ðô !$ I£�IàÐr"   c                ó’   • SU;   aA  US   SLa8  [         R                  R                  R                  R                  " US   6 US'   g g g )NrÔ   TrR   )rÃ   rÄ   ré   rã   rù   r'   s     r   r)   ÚExtension.postprocess9  sL   € à˜'Ó! g¨kÑ&:À$Ò&FÜ %§¡× 3Ñ 3× 6Ñ 6× FÒ FØ˜Ñ%ð!'ˆG�HÒð 'GÐ!r"   r   N©r+   r,   r-   r.   r/   r   r   r0   r   r2   r$   r)   r3   r   r"   r   r  r    sC   ‡ ÙEà€Fà€HˆiÓò€Hð ñó ðð  ñ'ó ó'r"   r  c                  óT   • \ rS rSr% SrSr/ rS\S'   / SQr\	S 5       r
\	S 5       rS	rg
)ÚModulusi@  z9``modulus`` option to polynomial manipulation functions. rÕ   r   r   )rÒ   r±   rR   rÎ   rÔ   c                óx   • [        U5      nUR                  (       a  US:”  a  [        U5      $ [        SU-  5      e)Nr   z)'modulus' must a positive integer, got %s)r   Ú
is_Integerrî   r	   )r   rÕ   s     r   r$   ÚModulus.preprocessH  s<   € ä˜'Ó"ˆà×× '¨A£+Ü�w“<ÐäØ;¸gÑEóGð Gr"   c                ó˜   • SU;   aD  US   nUR                  SS5      n[        R                  R                  R	                  X#5      US'   g g )NrÕ   rÖ   TrR   )r_   rÃ   rÄ   ré   ró   )r   r(   rÕ   rÖ   s       r   r)   ÚModulus.postprocessR  sH   € à˜ÓØ˜iÑ(ˆGØŸ™ K°Ó6ˆIÜ %§¡× 3Ñ 3× 6Ñ 6°wÓ JˆG�HÒð  r"   r   Nr  r   r"   r   r  r  @  sC   ‡ ÙCà€Fà€HˆiÓÚE€HàñGó ðGð ñKó óKr"   r  c                  ó*   • \ rS rSrSrSrS/r/ SQrSrg)Ú	SymmetriciZ  z;``symmetric`` option to polynomial manipulation functions. rÖ   rÕ   )rÒ   rR   r±   rÎ   rÔ   r   N)	r+   r,   r-   r.   r/   r   r   r   r3   r   r"   r   r  r  Z  s   † ÙEà€Fàˆ{€HÚEƒHr"   r  c                  ó,   • \ rS rSrSrSr\S 5       rSrg)ÚStrictic  z8``strict`` option to polynomial manipulation functions. r[   c                ó   • gr”   r   r   s    r   r   ÚStrict.defaulth  r!   r"   r   N©	r+   r,   r-   r.   r/   r   r2   r   r3   r   r"   r   r  r  c  s   † ÙBà€Fàñó ór"   r  c                  óD   • \ rS rSrSrSr/ SQr\S 5       r\S 5       r	Sr
g)	ÚAutoim  z4``auto`` flag to polynomial manipulation functions. Úauto)rÍ   rR   rÔ   rÎ   c                ó   • gr”   r   r   s    r   r   ÚAuto.defaultt  r!   r"   c                ó6   • SU;   d  SU;   a  SU;  a  SUS'   g g g )NrR   rÍ   r%  Fr   r'   s     r   r)   ÚAuto.postprocessx  s*   € à˜Ó 7¨gÓ#5¸6ÈÓ;PØ#ˆG�FŠOð <QÐ#5r"   r   N)r+   r,   r-   r.   r/   r   r   r2   r   r)   r3   r   r"   r   r$  r$  m  s5   † Ù>à€Fâ8€Eàñó ðð ñ$ó ó$r"   r$  c                  ó,   • \ rS rSrSrSr\S 5       rSrg)ÚFraci~  z6``auto`` option to polynomial manipulation functions. Úfracc                ó   • grŽ   r   r   s    r   r   ÚFrac.defaultƒ  ó   € àr"   r   Nr"  r   r"   r   r+  r+  ~  s   † Ù@à€Fàñó ór"   r+  c                  ó,   • \ rS rSrSrSr\S 5       rSrg)ÚFormaliˆ  z6``formal`` flag to polynomial manipulation functions. Úformalc                ó   • grŽ   r   r   s    r   r   ÚFormal.default�  r/  r"   r   Nr"  r   r"   r   r1  r1  ˆ  ó   † Ù@à€Fàñó ór"   r1  c                  ó   • \ rS rSrSrSrSrg)ÚPolysi’  z5``polys`` flag to polynomial manipulation functions. rÄ   r   N)r+   r,   r-   r.   r/   r   r3   r   r"   r   r7  r7  ’  s
   † Ù?àƒFr"   r7  c                  ó,   • \ rS rSrSrSr\S 5       rSrg)ÚIncludei˜  z7``include`` flag to polynomial manipulation functions. Úincludec                ó   • grŽ   r   r   s    r   r   ÚInclude.default�  r/  r"   r   Nr"  r   r"   r   r9  r9  ˜  s   † ÙAà€Fàñó ór"   r9  c                  ó,   • \ rS rSrSrSr\S 5       rSrg)ÚAlli¢  z3``all`` flag to polynomial manipulation functions. Úallc                ó   • grŽ   r   r   s    r   r   ÚAll.default§  r/  r"   r   Nr"  r   r"   r   r>  r>  ¢  s   † Ù=à€Fàñó ór"   r>  c                  ó<   • \ rS rSrSrSr\S 5       r\S 5       rSr	g)ÚGeni¬  z3``gen`` flag to polynomial manipulation functions. rŸ   c                ó   • g)Nr   r   r   s    r   r   ÚGen.default±  s   € àr"   c                óR   • [        U[        [        45      (       a  U$ [        S5      e)Nz!invalid argument for 'gen' option)r¡   r   rî   r	   )r   rŸ   s     r   r$   ÚGen.preprocessµ  s$   € ä�cœE¤3˜<×(Ñ(ØˆJäÐAÓBÐBr"   r   N©
r+   r,   r-   r.   r/   r   r2   r   r$   r3   r   r"   r   rC  rC  ¬  s2   † Ù=à€Fàñó ðð ñCó óCr"   rC  c                  ó,   • \ rS rSrSrSr\S 5       rSrg)ÚSeriesi½  z6``series`` flag to polynomial manipulation functions. Úseriesc                ó   • grŽ   r   r   s    r   r   ÚSeries.defaultÂ  r/  r"   r   Nr"  r   r"   r   rJ  rJ  ½  r5  r"   rJ  c                  ó<   • \ rS rSrSrSr\S 5       r\S 5       rSr	g)ÚSymbolsiÇ  z7``symbols`` flag to polynomial manipulation functions. r  c                ó   • [        SSS9$ )NÚsrœ   )Ústart)r   r   s    r   r   ÚSymbols.defaultÌ  s   € ä ¨1Ñ-Ð-r"   c                óV   • [        US5      (       a  [        U5      $ [        SU-  5      e)Nr  z2expected an iterator or iterable container, got %s)r²   Úiterr	   )r   r  s     r   r$   ÚSymbols.preprocessÐ  s+   € ä�7˜J×'Ñ'Ü˜“=Ð äÐRÐU\Ñ\Ó]Ð]r"   r   NrH  r   r"   r   rO  rO  Ç  s2   † ÙAà€Fàñ.ó ð.ð ñ^ó ó^r"   rO  c                  ó,   • \ rS rSrSrSr\S 5       rSrg)ÚMethodiØ  z6``method`` flag to polynomial manipulation functions. Úmethodc                óh   • [        U[        5      (       a  UR                  5       $ [        SU-  5      e)Nzexpected a string, got %s)r¡   r£   Úlowerr	   )r   rY  s     r   r$   ÚMethod.preprocessÝ  s,   € ä�fœc×"Ñ"Ø—<‘<“>Ð!äÐ9¸FÑBÓCÐCr"   r   N)	r+   r,   r-   r.   r/   r   r2   r$   r3   r   r"   r   rX  rX  Ø  s   † Ù@à€FàñDó óDr"   rX  c                óf   • Uc  SU p[        U5      S:w  d  SU;  d  U (       a  [        X5      $ US   $ )z9Construct options from keyword arguments or ... options. r   rœ   Úopt)r¢   r   )rQ   rK   s     r   Úbuild_optionsr_  å  s7   € à�|Ø˜ˆdä
ˆ4ƒy�Aƒ~˜ dÓ*®dÜ�tÓ"Ð"à�E‰{Ðr"   c                óð   • [        U5      nU R                  5        H;  n [        R                  U   R                  (       a  X!;  a  [        SU-  5      eM;  M=     g! [         a    [        SU-  5      ef = f)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'])

rW   rV   N)rp   ra   r   rJ   r1   r
   rD   r	   )rK   rZ   Úargs      r   Úallowed_flagsrb  ð  s€   € ô( �‹J€Eà�y‰yŽ{ˆð	BÜ×"Ñ" 3Ñ'×/×/°CÓ4DÜØ>ÀÑDóFð Fñ 5EÑ/ò øô
 ó 	BÜÐ:¸SÑ@ÓAÐAð	Bús    5AÁA5c                ó0   • SU ;  a  [        U 5      n XS'   U $ )z$Update options with default values. rT   )r^   )r(   rT   s     r   Úset_defaultsrd    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   r5   r8   Útyper@   r^   r   r‘   r˜   r©   r¸   rÀ   rÌ   rÑ   rØ   rÝ   r  r
  r  r  r  r  r$  r+  r1  r7  r9  r>  rC  rJ  rO  rX  r_  rb  rd  rx   r   r"   r   Ú<module>ro     s#  ðÙ Då "àˆ+€å "Ý  Ý &ß JÑ Jß FÑ Fß ;ã ã 	÷ñ ô4ˆ6ô ôg�Fô gô.�ô .ð ôrˆdó ró ðrôj
ˆ] 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"   