Ë
    7^(h.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jw                  «        y
)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y)ÚOptionz%Base class for all kinds of options. Nz
str | NoneÚoptionFú	list[str]ÚrequiresÚexcludesÚafterÚbeforec                 ó   — y ©N© ©Úclss    úU/var/www/skyplay_api_hub/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.preprocess5   s,   € à�MÑ!Ü˜“;ÐåÐSV×S]ÓS]Ñ_dÐeÓfÐfr    N)r'   r(   r)   r*   r-   r"   r   r    r   r1   r1   2   s   „ ÙKàñgó ñgr    r1   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>.getterA   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*   rB   r   r    r   r7   r7   =   s
   „ Ù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Údomainc           	     óü  ‡ ‡‡— 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 )	NrD   r   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?   r:   r	   Ú
issubclassr/   r"   )r@   r   r5   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 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__ƒ   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   rZ   s     €r   r^   z3Options._init_dependencies_order.<locals>.<genexpr>Æ   s   øè ø€ ÒF¨u˜d Eœ]ÑFùr_   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ò 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. )rP   Ú__new__Ú	__class__rK   )r;   ÚupdatesÚobjr   r5   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;   Úattrr5   rl   s      €r   rr   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   )rK   r?   rL   r/   )r;   r@   r   r5   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?   rK   rL   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   rv   )r;   rM   r   r   s       r   rM   zOptions.flags÷   sJ   € àˆà×+Ñ+×1Ñ1Ó3ò 	6‰KˆF�CÜ˜#œtÕ$Ü '¨¨fÓ 5��f’ð	6ð ˆr    ©NF)r'   r(   r)   r*   rT   r?   r+   rB   r-   ri   ro   rr   r=   r@   r%   rM   Ú__classcell__)rl   s   @r   r   r   L   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   r|   r|     s0   … ÙBà€Fà€HˆiÓØ€HˆiÓàñó ñr    r|   )Ú	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)r[   Ú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	   rd   Ú	_re_splitÚsplitÚhasattrÚmap)r   r‘   s     r   r"   zWrt.preprocess6  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.defaultO  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™   rd   rš   r	   )r   rŸ   rˆ   s      r   r"   zSort.preprocessS  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ž   G  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.defaulte  s   € ä�{‰{×$Ñ$×(Ñ(Ð(r    c                óT   — t         j                  j                  j                  |«      S r   )r§   r¨   r©   Úmonomial_key)r   r¥   s     r   r"   zOrder.preprocessi  s   € ä�{‰{×$Ñ$×1Ñ1°%Ó8Ð8r    NrŽ   r   r    r   r¤   r¤   ]  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   )rE   r˜   ÚgaussianN©r'   r(   r)   r*   r   r   r+   r   r   r    r   r®   r®   n  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   ©rE   r˜   r°   Ú	extensionÚmodulusÚ	symmetricNr±   r   r    r   r³   r³   w  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. 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                óô
  — 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_polynomialrd   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™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   rE   z/ground domain and generators interfere togetherz>you have to provide generators because EX domain was requested)Úis_Compositera   Ú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´   rE   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´   rE   r˜   r¶   r·   r¸   c                ó–   — d|v rE|d   du r=t         j                  j                  j                  |d<   t        j                  |«       y y y )Nr°   TrE   )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´   rE   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__)r4   r	   r™   ra   )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¶   TrE   )r§   r¨   rÊ   rÄ   rÚ   r$   s     r   r&   zExtension.postprocess9  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˜   rE   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.preprocessH  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¸   TrE   )rQ   r§   r¨   rÊ   rÔ   )r   r%   r·   r¸   s       r   r&   zModulus.postprocessR  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´   rE   r˜   r°   r¶   N)r'   r(   r)   r*   r   r   r   r   r    r   rö   rö   Z  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. rN   c                 ó   — y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  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¯   rE   r¶   r°   c                 ó   — yr   r   r   s    r   r   zAuto.defaultt  r   r    c                ó*   — d|v sd|v rd|vrd|d<   y y y )NrE   r¯   rý   Fr   r$   s     r   r&   zAuto.postprocessx  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ü   m  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ry   r   r   s    r   r   zFrac.defaultƒ  ó   € àr    Nrú   r   r    r   r  r  ~  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ry   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ry   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ry   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ry   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'])

    rJ   rI   N)ra   rS   r   r?   r,   r
   r:   r	   )r@   rM   Ú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. rG   )rP   )r%   rG   s     r   Úset_defaultsr0    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+  r.  r0  ri   r   r    r   ú<module>r;     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    