+
    ‹°³jã/  ã                   ó¼   € ^ RI Ht ^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt R tRR ltR tRR ltR tR tR tR# )é    ©ÚTuple)ÚBasic)ÚExpr)ÚAppliedUndef)Ú
Relational)ÚDummy)Úsympify)ÚBooleanFunction)ÚImageSet)Ú	FiniteSet)ÚIndexedc                ó>  € \        V \        \        \        34      '       g   V .p \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       d   \        4       # \        4       P
                  ! V  Uu. uF  qP                  \        4      NK  	  up!  pVP
                  ! V  Uu. uF  qP                  \        4      NK  	  up!  pT;'       g2    \        4       P
                  ! V  Uu. uF  qP                  NK  	  up!  # u upi u upi u upi )zýReturns the free symbols of a symbolic expression.

If the expression contains any of these elements, assume that they are
the "free symbols" of the expression:

* indexed objects
* applied undefined function (useful for sympy.physics.mechanics module)
c              3   ó8   "  € T F  p\        V4      x € K  	  R # 5i©N©Úcallable)Ú.0Úes   & ÚU/home/luca/screen-checking/.venv/lib/python3.14/site-packages/sympy/plotting/utils.pyÚ	<genexpr>Ú$_get_free_symbols.<locals>.<genexpr>   s   é € Ð
&¡˜1Œ8�A�;ˆ;£ùs   ‚FT)
Ú
isinstanceÚlistÚtupleÚsetÚallÚunionÚatomsr   r   Úfree_symbols)Úexprsr   Úfrees   &  r   Ú_get_free_symbolsr#      sÆ   € ô �eœd¤E¬3Ð/×0Ò0Ø�ˆß
ƒsÑ
&¡Ó
&‡s‡s‚sÑ
&¡Ó
&×&Ò&Ü‹uˆä‹5�;Š;±5Ó9±5¨aŸ™¤Ö)±5Ñ9Ñ:€DØ�:Š:±uÓ=±u°!Ÿ™¤Ö-±uÑ=Ñ>€DØ×@Ð@”3“5—;’;¹Ó ?¹°A§¤¹Ñ ?Ñ@Ð@ùò :ùÚ=ùÚ ?s   ÂDÂ3DÃ7Dc           	     óÜ   € V P                  \        4      pV FK  p\        V4      p\        \	        ^ X4       Uu. uF  p\        V4      NK  	  up!  pV P                  W54      p KM  	  V # u upi )ao  Extract numerical solutions from a set solution (computed by solveset,
linsolve, nonlinsolve). Often, it is not trivial do get something useful
out of them.

Parameters
==========

n : int, optional
    In order to replace ImageSet with FiniteSet, an iterator is created
    for each ImageSet contained in `set_sol`, starting from 0 up to `n`.
    Default value: 10.
)Úfindr   Úiterr   ÚrangeÚnextÚsubs)Úset_solÚnÚimagesÚimÚitÚss   &&    r   Úextract_solutionr0   !   sb   € ð �\‰\œ(Ó#€FÛˆÜ�"‹XˆÜ¬%°°1¬+Ó6©+ Qœ˜Rž©+Ñ6Ñ7ˆØ—,‘,˜rÓ%Šñ ð €Nùò 7s   ¹A)
c                ó¾  € \        V \        4      '       d   V # \        V 4      p \        V 4       Fª  w  r\        V\        \        34      '       d   \        \        V4      RR/ W&   K9  \        V\        \        34      '       d   KW  \        V4      '       d   Kj  VP                  P                  R8X  d   \        V\        4      '       g   K�  \        V4      W&   K¬  	  V # )aý  This function recursively loop over the arguments passed to the plot
functions: the sympify function will be applied to all arguments except
those of type string/dict.

Generally, users can provide the following arguments to a plot function:

expr, range1 [tuple, opt], ..., label [str, opt], rendering_kw [dict, opt]

`expr, range1, ...` can be sympified, whereas `label, rendering_kw` can't.
In particular, whenever a special character like $, {, }, ... is used in
the `label`, sympify will raise an error.
r
   FÚVector)r   r   r   Ú	enumerater   r   Ú_plot_sympifyÚstrÚdictr   Ú	__class__Ú__name__r   r
   )ÚargsÚiÚas   &  r   r4   r4   6   s¡   € ô �$œ×ÒØˆä�‹:€DÜ˜$–‰ˆÜ�aœ$¤˜×'Ò'Üœ]¨1Ó-Ð=°uÑ=ˆD‹GÜ˜Q¤¤d ×,Ô,´¸·´ð
 —‘×%Ñ%¨Ô1¼:ÀaÌ×;OÔ;Oä˜a“jˆD‹Gñ  ð €Kó    Nc                óh  € R p\        V 4      pVe    VP                  VP                  4       4      p\        V4      V8”  dB   \	        RRP                  V4      ,           RP                  \        V4      V4      ,           4      h\        V4      V8”  d   \	        R\        V4      : RV: 24      h\        4       P                  V Uu. uF  qw^ ,          NK  	  up4      p\        V4      \        V4      8w  d   \	        R4      h\        V4      V8  d‚   VP                  V4      p	V	\        4       8w  d!   V	 F  p
VP                  V! V
4      4       K  	  \        V\        V4      ,
          4       F"  pVP                  V! \        4       4      4       K$  	  \        V4      V8X  d†   \        4       P                  V Uu. uF  qw^ ,          NK  	  up4      p\        VP                  V4      4      ^ 8”  d8   \	        RR	P                  V4      ,           R
P                  V4      ,           4      hV# u upi u upi )a¹  This function does two things:

1. Check if the number of free symbols is in agreement with the type of
   plot chosen. For example, plot() requires 1 free symbol;
   plot3d() requires 2 free symbols.
2. Sometime users create plots without providing ranges for the variables.
   Here we create the necessary ranges.

Parameters
==========

exprs : iterable
    The expressions from which to extract the free symbols
ranges : iterable
    The limiting ranges provided by the user
npar : int
    The number of free symbols required by the plot functions.
    For example,
    npar=1 for plot, npar=2 for plot3d, ...
params : dict
    A dictionary mapping symbols to parameters for interactive plot.
c                 ó   € \        V R^
4      # )é
   iöÿÿÿr   )Úsymbols   &r   Ú<lambda>Ú _create_ranges.<locals>.<lambda>l   s   € ¤u¨V°S¸"Ô'=r<   zToo many free symbols.
zExpected {} free symbols.
zReceived {}: {}zToo many ranges. Received z, expected z$Multiple ranges with the same symbolz>Incompatible free symbols of the expressions with the ranges.
z$Free symbols in the expressions: {}
zFree symbols in the ranges: {})r#   Ú
differenceÚkeysÚlenÚ
ValueErrorÚformatr   r   Úappendr'   r	   )r!   ÚrangesÚnparÚlabelÚparamsÚget_default_ranger    ÚrÚrfsÚsymbolsr/   r:   s   &&&&&       r   Ú_create_rangesrQ   U   sí  € ñ. >Ðä$ UÓ+€LØÒØ#×.Ñ.¨v¯{©{«}Ó=ˆä
ˆ<Ó˜4ÔÜØ&Ø+×2Ñ2°4Ó8õ9à×&Ñ&¤s¨<Ó'8¸,ÓGõHó
ð 	
ô ˆ6ƒ{�TÔÝÜ;>¸v¾;ÊÐMóOð 	Oô ‹%�+‰+¡VÓ,¡V ˜—t�t¡VÑ,Ó
-€CÜ
ˆ3ƒx”3�v“;ÔÜÐ?Ó@Ð@ä
ˆ6ƒ{�TÔØ×)Ñ)¨#Ó.ˆØ”c“eÔã�Ø—‘Ñ/°Ó2Ö3ñ ô �tœc &›kÕ)Ö*ˆAØ�M‰MÑ+¬E«GÓ4Ö5ñ +ô ˆ<Ó˜DÔ ô ‹e�k‰k©Ó0© A˜QŸ4˜4©Ñ0Ó1ˆÜˆ|×&Ñ& sÓ+Ó,¨qÔ0Üð à9×@Ñ@ÀÓNõOð 3×9Ñ9¸#Ó>õ?óð ð €Mùò5 -ùò$ 1s   ÃH*Æ:H/c                óš  € \        V \        4      ;'       dµ    \        V 4      ^8H  ;'       dŸ    \        V P                  ^,          \        4      '       * ;'       dq    V P                  ^,          P
                  ;'       dL    \        V P                  ^,          \        4      '       * ;'       d    V P                  ^,          P
                  # )zMA range is defined as (symbol, start, end). start and end should
be numbers.
)r   r   rE   r9   r5   Ú	is_number)rN   s   &r   Ú	_is_rangerT   ›   sª   € ô 	�1”eÓ÷ 	Eð 	EÜ�‹V�q‰[÷	Eð 	Eä˜AŸF™F 1�I¤sÓ+Ô+÷	Eð 	Eà12·±¸µ×1DÑ1D÷	Eð 	Eô ˜AŸF™F 1�I¤sÓ+Ô+÷	Eð 	Eð 23·±¸µ×1DÑ1Dð	r<   c                 óX  € V  Uu. uF  p\        V4      '       g   K  VNK  	  ppV  Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV'       g   RMV^ ,          pV  Uu. uF  p\        V\        4      '       g   K  VNK  	  ppV'       g   RMV^ ,          pV  Uu. uF=  p\        V4      ;'       g#    \        V\        \        34      ;'       g    VRJ '       * NK?  	  pp\	        W4       UUu. uF  w  rhV'       g   K  VNK  	  p	ppW’WE3# u upi u upi u upi u upi u uppi )aR  Given a list/tuple of arguments previously processed by _plot_sympify()
and/or _check_arguments(), separates and returns its components:
expressions, ranges, label and rendering keywords.

Examples
========

>>> from sympy import cos, sin, symbols
>>> from sympy.plotting.utils import _plot_sympify, _unpack_args
>>> x, y = symbols('x, y')
>>> args = (sin(x), (x, -10, 10), "f1")
>>> args = _plot_sympify(args)
>>> _unpack_args(*args)
([sin(x)], [(x, -10, 10)], 'f1', None)

>>> args = (sin(x**2 + y**2), (x, -2, 2), (y, -3, 3), "f2")
>>> args = _plot_sympify(args)
>>> _unpack_args(*args)
([sin(x**2 + y**2)], [(x, -2, 2), (y, -3, 3)], 'f2', None)

>>> args = (sin(x + y), cos(x - y), x + y, (x, -2, 2), (y, -3, 3), "f3")
>>> args = _plot_sympify(args)
>>> _unpack_args(*args)
([sin(x + y), cos(x - y), x + y], [(x, -2, 2), (y, -3, 3)], 'f3', None)
N)rT   r   r5   r6   Úzip)
r9   ÚtrI   ÚlabelsrK   Úrendering_kwr;   ÚresultsÚbr!   s
   *         r   Ú_unpack_argsr\   ¨   sù   € ñ4 Ó.™�A¤¨1§�aˆa™€FÐ.ÙÓ4™�A¤¨A¬s×!3�aˆa™€FÐ4ß‰D F¨1¥I€EÙ#Ó;™t˜!¤z°!´T×':—A�A™t€LÐ;ß+‘4°¸aµ€Lñ Y]Ó]ÑX\ÐST”I˜a“L×MÐM¤J¨q´3¼°+Ó$>×MÐMÀ1ÈÀ9×NÑX\€GÐ]Ü˜tÔ-Ô3Ñ-‘4�1´�QˆQÑ-€EÑ3Ø˜%Ð-Ð-ùò /ùÚ4ùâ;ùò ^ùÛ3s?   …D�D©DÁDÁ%DÂDÂ!D!Â8D!ÃD!Ã4D&ÄD&c                ó¬  € V '       g   . # . pVP                  RR4      p\        ;QJ d    R V RV  4       F  '       d   K   RM	  RM! R V RV  4       4      '       d»   \        V !  w  rgr‰\        4       P                  ! V U
u. uF  qªP
                  NK  	  up
!  p\        WgW(V4      pV^8”  d   \        V4      V8X  d   \        V4      3pV FE  p\        V\        \        \        34      pV'       d   V3MTp
VP                  . V
OVOVNV	N54       KG  	  V# \        V !  w  rçrùV'       d   V.M. p\        V4      \        V4      ,           V	e   \        V	4      M^ ,           pV^ 8”  d   V RV)  MT p\        V^ ,          \        \        \        34      '       g   V.pV EF’  pV Uu. uF  p\        V\         4      '       g   K  VNK  	  ppV'       g   TpV Uu. uF  p\#        V4      '       g   K  VNK  	  ppV'       g   VP%                  4       pV Uu. uF  p\        V\&        4      '       g   K  VNK  	  pp\        V4      ^ 8X  d   T	MV^ ,          p\)        V4       Uu. uF  pVV,          NK  	  pp\        4       p\        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d+   VP                  ! V Uu. uF  pVP
                  NK  	  up!  p\        V4      V8w  d   \        VVVRV4      pV'       g   RMV^ ,          pVP                  . VOVOVNVN54       EK•  	  V# u up
i u upi u upi u upi u upi u upi )a”  Checks the arguments and converts into tuples of the
form (exprs, ranges, label, rendering_kw).

Parameters
==========

args
    The arguments provided to the plot functions
nexpr
    The number of sub-expression forming an expression to be plotted.
    For example:
    nexpr=1 for plot.
    nexpr=2 for plot_parametric: a curve is represented by a tuple of two
        elements.
    nexpr=1 for plot3d.
    nexpr=3 for plot3d_parametric_line: a curve is represented by a tuple
        of three elements.
npar
    The number of free symbols required by the plot functions. For example,
    npar=1 for plot, npar=2 for plot3d, ...
**kwargs :
    keyword arguments passed to the plotting function. It will be used to
    verify if ``params`` has ben provided.

Examples
========

.. plot::
   :context: reset
   :format: doctest
   :include-source: True

   >>> from sympy import cos, sin, symbols
   >>> from sympy.plotting.plot import _check_arguments
   >>> x = symbols('x')
   >>> _check_arguments([cos(x), sin(x)], 2, 1)
   [(cos(x), sin(x), (x, -10, 10), None, None)]

   >>> _check_arguments([cos(x), sin(x), "test"], 2, 1)
   [(cos(x), sin(x), (x, -10, 10), 'test', None)]

   >>> _check_arguments([cos(x), sin(x), "test", {"a": 0, "b": 1}], 2, 1)
   [(cos(x), sin(x), (x, -10, 10), 'test', {'a': 0, 'b': 1})]

   >>> _check_arguments([x, x**2], 1, 1)
   [(x, (x, -10, 10), None, None), (x**2, (x, -10, 10), None, None)]
rL   Nc              3   óX   "  € T F   p\        V\        \        \        34      x € K"  	  R # 5ir   )r   r   r   r   ©r   r;   s   & r   r   Ú#_check_arguments.<locals>.<genexpr>  s!   é € Ð
TÁ|À!Œ:�aœ$¤
¬OÐ<×=Ð=Ã|ùs   ‚(*FTc              3   óB   "  € T F  p\        V4      '       * x € K  	  R # 5ir   r   r_   s   & r   r   r`   <  s   é € Ð0©C q”x “{—?‘?«Cùs   ‚Ú )Úgetr   r\   r   r   r    rQ   rE   r   r   r   r   r   rH   r   r   r5   rT   Úcopyr6   r'   )r9   ÚnexprrJ   ÚkwargsÚoutputrL   r!   rI   rK   rY   r   r    ÚexprÚis_exprÚ_rX   r+   Únew_argsÚargr;   ÚlrN   Úrend_kwr:   s   &&&,                    r   Ú_check_argumentsro   Î   sï  € ÷` Øˆ	Ø€FØ�Z‰Z˜ $Ó'€Fç
ƒsÑ
TÀtÈFÈUÁ|Ó
T‡s‡s‚sÑ
TÀtÈFÈUÁ|Ó
T×TÒTô
 .:¸4Ñ-@Ñ*ˆ�uÜ“u—{’{¹UÓ$C¹U¸§^¤^¹UÑ$CÑDˆÜ ¨t¸FÓCˆà�1Œ9ô �5‹z˜UÔ"Ü˜u›˜�ÛˆDô ! ¬¬j¼/Ð'JÓKˆGß"�‘¨ˆAØ�M‰MÐ<˜AÐ< Ð<¨Ð<¨|Ñ<Ö=ñ ðd €MôM +7¸Ñ*=Ñ'ˆ�6ß#�&‘¨ˆô �‹[œ3˜v›;Õ&Ø".Ò":ŒS�ÔÀõCˆà ! A¤�4˜˜!˜‘9¨4ˆô
 ˜( 1�+¬¬e´UÐ';×<Ò<Ø �zˆHô ˆCáÓ6™C�q¤:¨a´×#5—�™CˆAÐ6ßØ�ÙÓ0™C�q¤9¨Q§<—�™CˆAÐ0ßØ—K‘K“M�Ù"%Ó=¡#˜Q¬°A´t×)<—q�q¡#ˆGÐ=Ü&)¨'£l°aÔ&7‘l¸WÀQ½ZˆGô $)¨¤<Ó0¡<˜a�3�q—6�6¡<ˆCÐ0Ü›5ˆLß‹sÑ0©CÓ0�s�sŠsÑ0©CÓ0×0Ò0Ø+×1Ò1ÉCÓ3PÉCÀq°A·N´NÉCÑ3PÑQ�Ü�1‹v˜Œ~Ü" 3¨¨4°°VÓ<�ç !‘D q¨¥tˆEØ�M‰MÐ4˜CÐ4 !Ð4 UÐ4¨GÑ4×5ñ+ ð, €Mùòu %DùòL 7ùò 1ùò >ùò
 1ùò 4Qs6   ÂL8Æ'L=ÇL=ÇMÇ2MÈMÈ3MÉ#MËM
)r?   )rb   N)Úsympy.core.containersr   Úsympy.core.basicr   Úsympy.core.exprr   Úsympy.core.functionr   Úsympy.core.relationalr   Úsympy.core.symbolr	   Úsympy.core.sympifyr
   Úsympy.logic.boolalgr   Úsympy.sets.fancysetsr   Úsympy.sets.setsr   Úsympy.tensor.indexedr   r#   r0   r4   rQ   rT   r\   ro   © r<   r   Ú<module>r|      sN   ðÝ 'Ý "Ý  Ý ,Ý ,Ý #Ý &Ý /Ý )Ý %Ý (òAô&ò*ô>CòL
ò#.ôLur<   