§
    OŠtjL7  ã                   ó|   — d dl mZ d dlmZ d dlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ  G d	„ d
e¦  «        Zd„ ZdS )é   ©ÚPlotInterval)Ú
PlotObject)Úparse_option_stringé    ©ÚSymbol)Úsympify)ÚGeometryEntity)Úis_sequencec                   ó0  — e Zd ZdZd\  ZZg Zg ZdZd„ Z	g Z
i i dœi i dœi i dœdœZi i i dœZd\  ZZd„ Zed	„ ¦   «         Zedd„¦   «         Zedd„¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdZed„ ¦   «         Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         ZdS )ÚPlotModezü
    Grandparent class for plotting
    modes. Serves as interface for
    registration, lookup, and init
    of modes.

    To create a new plot mode,
    inherit from PlotModeBase
    or one of its children, such
    as PlotSurface or PlotCurve.
    )Ú r   Fc                 ó   — t          ¦   «         ‚©N)ÚNotImplementedError)Úselfs    úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/plotting/pygletplot/plot_mode.pyÚdrawzPlotMode.draw%   s   € Ý!Ñ#Ô#Ð#ó    )r   é   )r   r   é   )r   r   c                 ó.  — t                                ||¦  «        \  }}|                     dd¦  «        }t                                |¦  «        \  }}t                                ||¦  «        }t          t          |¦  «        t          |¦  «        g¦  «        t          |¦  «        }
}	t                                ||	|
¦  «        }t           	                    |¦  «        }||_
        |                     |¦  «         |                     |¦  «         ||_        |S )zÆ
        This is the function which interprets
        arguments given to Plot.__init__ and
        Plot.__setattr__. Returns an initialized
        instance of the appropriate child class.
        Úmoder   )r   Ú_extract_optionsÚgetÚ_interpret_argsÚ_find_i_varsÚmaxÚlenÚ	_get_modeÚobjectÚ__new__Úd_varsÚ_fill_i_varsÚ_fill_intervalsÚoptions)ÚclsÚargsÚkwargsÚnewargsÚ	newkwargsÚmode_argr$   Ú	intervalsÚi_varsÚiÚdÚsubclsÚos                r   r#   zPlotMode.__new__<   sï   € õ &×6Ò6°t¸VÑDÔDÑˆ�Ø—=’= ¨Ñ,Ô,ˆõ %×4Ò4°WÑ=Ô=Ñˆ�	Ý×&Ò& v¨yÑ9Ô9ˆÝ•C˜‘K”K¥ Y¡¤Ð0Ñ1Ô1µ3°v±;´;ˆ1ˆõ ×#Ò# H¨a°Ñ3Ô3ˆõ �NŠN˜6Ñ"Ô"ˆð ˆŒØ	�Š�vÑÔÐØ	×Ò˜)Ñ$Ô$Ð$ØˆŒ	àˆr   c                 óÈ  — 	 d}t          | t          ¦  «        r| }n# t          $ r Y nw xY w|r{|j        s t	          d|j        ›d|j        ›d�¦  «        ‚||j        k    rt	          d|j        |j        fz  ¦  «        ‚||j        k    rt	          d|j        |j        fz  ¦  «        ‚|S t          | t          ¦  «        r—||}}|t          j
        k    rt	          t          dd¦  «        ¦  «        ‚|t          j        k    rt	          t          dd¦  «        ¦  «        ‚| st                               ||¦  «        S t                               | ||¦  «        S t	          d	¦  «        ‚)
a�  
        Tries to return an appropriate mode class.
        Intended to be called only by __new__.

        mode_arg
            Can be a string or a class. If it is a
            PlotMode subclass, it is simply returned.
            If it is a string, it can an alias for
            a mode or an empty string. In the latter
            case, we try to find a default mode for
            the i_var_count and d_var_count.

        i_var_count
            The number of independent variables
            needed to evaluate the d_vars.

        d_var_count
            The number of dependent variables;
            usually the number of functions to
            be evaluated in plotting.

        For example, a Cartesian function y = f(x) has
        one i_var (x) and one d_var (y). A parametric
        form x,y,z = f(u,v), f(u,v), f(u,v) has two
        two i_vars (u,v) and three d_vars (x,y,z).
        NzTo use unregistered plot mode z you must first call z._init_mode().z7%s can only plot functions with %i dependent variables.zA%s cannot plot functions with more than %i independent variables.TFz-PlotMode argument must be a class or a string)Ú
issubclassr   Ú	TypeErrorÚ_was_initializedÚ
ValueErrorÚ__name__Úd_var_countÚi_var_countÚ
isinstanceÚstrÚ
_i_var_maxÚvar_count_errorÚ
_d_var_maxÚ_get_default_modeÚ_get_aliased_mode)r-   r;   r:   Úmr0   r1   s         r   r!   zPlotMode._get_modeZ   s¹  € ð@	ØˆAÝ˜(¥HÑ-Ô-ð Ø�øøÝð 	ð 	ð 	ØˆDð	øøøàð 	ØÔ%ð =Ý �jà$%¤J J J°´
°
°
ð"<ñ =ô =ð =ð ˜aœmÒ+Ð+Ý ð #Aà$%¤JØ%&¤]ð$4ñ"4ñ 5ô 5ð 5ð ˜Qœ]Ò*Ð*Ý ð #/ð %&¤JØ%&¤]ð$4ñ"4ñ 5ô 5ð 5ð
 ˆHå�h¥Ñ$Ô$ð 	4Ø ˆqˆAØ•8Ô&Ò&Ð&Ý ¥°°tÑ!<Ô!<Ñ=Ô=Ð=Ø•8Ô&Ò&Ð&Ý ¥°¸Ñ!=Ô!=Ñ>Ô>Ð>ð ð BÝ×1Ò1°!°QÑ7Ô7Ð7õ  ×1Ò1°(¸A¸qÑAÔAÐAåð 3ñ 4ô 4ð 4s   ‚ œ
)¨)éÿÿÿÿc                 óê   — |dk    r| }	 t           j        |         |          S # t          $ rF | t           j        k     r!t                                | dz   ||¦  «        cY S t          d||fz  ¦  «        ‚w xY w)NrD   r   zKCouldn't find a default mode for %i independent and %i dependent variables.)r   Ú_mode_default_mapÚKeyErrorr>   rA   r8   )r0   r1   r/   s      r   rA   zPlotMode._get_default_mode¤   s¡   € à�RŠ<ˆ<ØˆFð	IÝÔ-¨aÔ0°Ô3Ð3øÝð 		Ið 		Ið 		Ið •8Ô&Ò&Ð&Ý×1Ò1°!°a±%¸¸FÑCÔCÐCÐCÐCå ð #9à=CÀQ¸Kñ"Hñ Iô Ið Ið		Iøøøs   Š" ¢9A2ÁA2c                 ó|  — |dk    r|}| t           j        vr3t          d| ›dd                     t           j        ¦  «        ›d�¦  «        ‚	 t           j        |         |         |          S # t
          $ rH |t           j        k     r"t                                | |dz   ||¦  «        cY S t          d| ||fz  ¦  «        ‚w xY w)NrD   zCouldn't find a mode called z. Known modes: z, ú.r   zFCouldn't find a %s mode for %i independent and %i dependent variables.)r   Ú_mode_alias_listr8   ÚjoinÚ	_mode_mapr6   r>   rB   )Úaliasr0   r1   r/   s       r   rB   zPlotMode._get_aliased_modeµ   sí   € à�RŠ<ˆ<ØˆFØ�Ô1Ð1Ð1Ý�*à %   t§y¢yµÔ1JÑ'KÔ'KÐ'KÐ'KðMñ Nô Nð Nð	7ÝÔ% aÔ(¨Ô+¨EÔ2Ð2øÝð 
	7ð 
	7ð 
	7ð •8Ô&Ò&Ð&Ý×1Ò1°%¸¸Q¹ÀÀ6ÑJÔJÐJÐJÐJå ð #9ð %*¨6°1Ð#5ñ"6ñ 7ô 7ð 7ð
	7øøøs   ÁA) Á):B;Â%B;c           	      ó¢  — | j         }|                      ¦   «          	 | j        | j        }}| j        D ]J}|t
          j        vrt
          j                             |¦  «         | t
          j        |         |         |<   ŒK| j	        r| t
          j
        |         |<   dS dS # t          $ r'}t          d|›dt          |¦  «        ›�¦  «        ‚d}~ww xY w)z 
        Called once for each user-usable plot mode.
        For Cartesian2D, it is invoked after the
        class definition: Cartesian2D._register()
        zFailed to register plot mode z
. Reason: N)r9   Ú
_init_moder;   r:   Úaliasesr   rJ   ÚappendrL   Ú
is_defaultrF   Ú	ExceptionÚRuntimeErrorr=   )r(   Únamer0   r1   ÚaÚes         r   Ú	_registerzPlotMode._registerË   sú   € ð Œ|ˆØ�ŠÑÔÐð	3Ø”? C¤OˆqˆAð ”[ð 2ð 2�Ø�HÔ5Ð5Ð5õ Ô-×4Ò4°QÑ7Ô7Ð7Ø.1•Ô" 1Ô% aÔ(¨Ñ+Ð+ØŒ~ð 7ð 47•Ô*¨1Ô-¨aÑ0Ð0Ð0ð	7ð 7øõ ð 	3ð 	3ð 	3Ý�,à"& $ $­¨Q©¬¨ð 2ñ 3ô 3ð 3øøøøð	3øøøs   �A<B Â
CÂ'"C	Ã	Cc                 ó  — d„ } || j         ¦  «        | _          || j        ¦  «        | _        t          | j         ¦  «        | _        t          | j        ¦  «        | _        | j        t
          j        k    rt          t          dd¦  «        ¦  «        ‚| j        t
          j	        k    rt          t          dd¦  «        ¦  «        ‚t          | j
        ¦  «        dk    r| j
        d         | _        n| j        | _        | j        }t          |¦  «        | j        k    rt          d¦  «        ‚t          | j        ¦  «        D ]@}t          ||         ¦  «        dk    rt          d¦  «        ‚t          dg||         ¢R Ž ||<   ŒAd| _        dS )	a  
        Initializes the plot mode based on
        the 'mode-specific parameters' above.
        Only intended to be called by
        PlotMode._register(). To use a mode without
        registering it, you can directly call
        ModeSubclass._init_mode().
        c                 ó   — d„ | D ¦   «         S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS © r   )Ú.0Úss     r   ú
<listcomp>z=PlotMode._init_mode.<locals>.symbols_list.<locals>.<listcomp>ö   s   € Ð2Ð2Ð2 !•F˜1‘I”IÐ2Ð2Ð2r   r\   )Ú
symbol_strs    r   Úsymbols_listz)PlotMode._init_mode.<locals>.symbols_listõ   s   € Ø2Ð2 zÐ2Ñ2Ô2Ð2r   TFr   z9Plot mode must provide a default interval for each i_var.r   zlength should be equal to 3N)r/   r$   r    r;   r:   r   r>   r8   r?   r@   rP   Úprimary_aliasr9   r.   Úranger   r7   )r(   ra   Údir0   s       r   rO   zPlotMode._init_modeë   s~  € ð	3ð 	3ð 	3ð
 "�\ #¤*Ñ-Ô-ˆŒ
Ø!�\ #¤*Ñ-Ô-ˆŒ
õ ˜cœj™/œ/ˆŒÝ˜cœj™/œ/ˆŒàŒ?�XÔ0Ò0Ð0Ý�_¨T°5Ñ9Ô9Ñ:Ô:Ð:ØŒ?�XÔ0Ò0Ð0Ý�_¨U°EÑ:Ô:Ñ;Ô;Ð;õ ˆsŒ{ÑÔ˜aÒÐØ #¤¨A¤ˆCÔÐà #¤ˆCÔàŒ]ˆÝˆr‰7Œ7�c”oÒ%Ð%Ýð @ñ Aô Að Aå�s”Ñ'Ô'ð 		/ð 		/ˆAõ �2�a”5‰zŒz˜QŠˆÝ Ð!>Ñ?Ô?Ð?õ
 ! Ð.¨¨1¬Ð.Ð.Ð.ˆBˆq‰EˆEð  $ˆÔÐÐr   c                 ó  — g }|D ]Q}|j         €Œ
|j         |v r$t          dt          |j         ¦  «        z  ¦  «        ‚|                     |j         ¦  «         ŒR| D ]%}|j        D ]}||vr|                     |¦  «         ŒŒ&|S )Nz Multiple intervals given for %s.)Úvr8   r=   rQ   Úfree_symbols)Ú	functionsr.   r/   r0   ÚfrV   s         r   r   zPlotMode._find_i_vars$  sµ   € àˆð
 ð 	ð 	ˆAØŒsˆ{ØØ”˜��Ý ð #,Ý03°A´C±´ñ":ñ ;ô ;ð ;à�MŠM˜!œ#ÑÔÐÐð
 ð 	%ð 	%ˆAØ”^ð %ð %�Ø˜F�?�?Ø—M’M !Ñ$Ô$Ð$øð%ð ˆr   c                 ó�   — d„ | j         D ¦   «         | _         t          t          |¦  «        ¦  «        D ]}||         | j         |<   Œd S )Nc                 óF   — g | ]}t          t          |¦  «        ¦  «        ‘ŒS r\   )r	   r=   ©r]   r0   s     r   r_   z)PlotMode._fill_i_vars.<locals>.<listcomp>?  s$   € Ð;Ð;Ð;¨!•v�c !™fœf‘~”~Ð;Ð;Ð;r   )r/   rc   r    )r   r/   r0   s      r   r%   zPlotMode._fill_i_vars=  sQ   € à;Ð;¨t¬{Ð;Ñ;Ô;ˆŒå•s˜6‘{”{Ñ#Ô#ð 	'ð 	'ˆAØ# AœYˆDŒK˜‰NˆNð	'ð 	'r   c                 ól  ‡— d„ | j         D ¦   «         | _         g Št          t          |¦  «        ¦  «        D ]_}| j         |                              ||         ¦  «         | j         |         j        �%‰                     | j         |         j        ¦  «         Œ`t          t          | j         ¦  «        ¦  «        D ]|}| j         |         j        €hˆfd„| j        D ¦   «         }t          |¦  «        dk    rt          d¦  «        ‚|d         | j         |         _        ‰                     |d         ¦  «         Œ}d S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r\   r   rl   s     r   r_   z,PlotMode._fill_intervals.<locals>.<listcomp>F  s   € ÐBÐBÐB¨a�, q™/œ/ÐBÐBÐBr   c                 ó   •— g | ]}|‰v¯|‘Œ	S r\   r\   )r]   rf   Úv_useds     €r   r_   z,PlotMode._fill_intervals.<locals>.<listcomp>S  s   ø€ Ð?Ð?Ð?˜1¨q¸¨¨�Q¨¨¨r   r   zlength should not be equal to 0)r.   rc   r    Ú	fill_fromrf   rQ   r/   r8   )r   r.   r0   Úurp   s       @r   r&   zPlotMode._fill_intervalsD  s*  ø€ àBÐB°4´>ÐBÑBÔBˆŒàˆõ •s˜9‘~”~Ñ&Ô&ð 	3ð 	3ˆAØŒN˜1Ô×'Ò'¨	°!¬Ñ5Ô5Ð5ØŒ~˜aÔ Ô"Ð.Ø—’˜dœn¨QÔ/Ô1Ñ2Ô2Ð2øõ •s˜4œ>Ñ*Ô*Ñ+Ô+ð 	$ð 	$ˆAØŒ~˜aÔ Ô"Ð*Ø?Ð?Ð?Ð? ¤Ð?Ñ?Ô?�Ý�q‘6”6˜Q’;�;Ý$Ð%FÑGÔGÐGØ&'¨¤d�”˜qÔ!Ô#Ø—’˜a œdÑ#Ô#Ð#øð	$ð 	$r   c                 ó"  — d}d}g g }}t          | d         t          ¦  «        rt          | d                              ¦   «         ¦  «        D ]}|                     |¦  «         Œ|                     t          j        | d                              ¦   «         ¦  «        ¦  «         nê| D ]ç}t          j        |¦  «        }|�Ht          |¦  «        dk    rt          |t          |¦  «        z  ¦  «        ‚|                     |¦  «         Œ`t          |t          ¬¦  «        rt          |t          |¦  «        z  ¦  «        ‚	 t          |¦  «        }|                     |¦  «         Œ»# t          $ r  t          |t          |¦  «        z  ¦  «        ‚w xY w||fS )Nz1PlotInterval %s was given before any function(s).z1Could not interpret %s as a function or interval.r   )Úinclude)r<   r   ÚlistÚarbitrary_pointrQ   r   Ú	try_parseÚplot_intervalr    r8   r=   r   r
   r6   )	r)   Úinterval_wrong_orderÚinterpret_errorrh   r.   ÚcoordsrV   r0   ri   s	            r   r   zPlotMode._interpret_argsY  s¡  € àRÐØMˆà! 2�9ˆ	Ý�d˜1”g�~Ñ.Ô.ð 	CÝ˜t Aœw×6Ò6Ñ8Ô8Ñ9Ô9ð )ð )�Ø× Ò  Ñ(Ô(Ð(Ð(Ø×Ò�\Ô3°D¸´G×4IÒ4IÑ4KÔ4KÑLÔLÑMÔMÐMÐMàð Cð C�Ý Ô*¨1Ñ-Ô-�Ø�=Ý˜9‘~”~¨Ò*Ð*Ý(Ð)=ÅÀQÁÄÑ)HÑIÔIÐIà!×(Ò(¨Ñ+Ô+Ð+Ð+å" 1­cÐ2Ñ2Ô2ð EÝ(¨½CÀ¹F¼FÑ)CÑDÔDÐDðCÝ# A™JœJ˜Ø!×(Ò(¨Ñ+Ô+Ð+Ð+øÝ$ð Cð Cð CÝ(¨½3¸q¹6¼6Ñ)AÑBÔBÐBðCøøøð ˜)Ð#Ð#s   Ä;$E Å *F
c                 óÀ   — i g }}| D ]G}t          |t          ¦  «        rt          |fi t          |¦  «        ¤Ž}Œ2|                     |¦  «         ŒHt          |fi |¤Ž}||fS r   )r<   r=   Údictr   rQ   )r)   r*   r,   r+   rV   s        r   r   zPlotMode._extract_optionsv  s�   € à �7ˆ	Øð 	"ð 	"ˆAÝ˜!�SÑ!Ô!ð "Ý  ÐEÐEÕ.AÀ!Ñ.DÔ.DÐEÐE�	�	à—’˜qÑ!Ô!Ð!Ð!Ý˜Ð-Ð- fÐ-Ð-ˆ	Ø˜	Ð!Ð!r   N)rD   )r9   Ú
__module__Ú__qualname__Ú__doc__r/   r$   r.   rP   rR   r   rJ   rL   rF   r>   r@   r#   Ústaticmethodr!   rA   rB   ÚclassmethodrX   rO   r7   r   r%   r&   r   r   r\   r   r   r   r   
   sº  € € € € € ð
ð 
ð" �N€FˆFØ€IØ€GØ€Jð$ð $ð $ð Ðà�bˆ>ˆ>Ø�bˆ>ˆ>Ø�bˆ>ˆ>ðð €Ið ØØðð Ðð
 "Ñ€J�
ðð ð ð< ðG4ð G4ñ „\ðG4ðR ðIð Ið Iñ „\ðIð  ð7ð 7ð 7ñ „\ð7ð* ð3ð 3ñ „[ð3ð> ð2$ð 2$ñ „[ð2$ðh Ðð ðð ñ „\ðð0'ð 'ð 'ð$ð $ð $ð* ð$ð $ñ „\ð$ð8 ð"ð "ñ „\ð"ð "ð "r   r   c                 ó^   — |rd}nd}| rt           j        d}}nt           j        d}}d|||fz  S )zQ
    Used to format an error message which differs
    slightly in 4 places.
    ÚPlottingzRegistering plot modesÚindependentÚ	dependentz3%s with more than %i %s variables is not supported.)r   r>   r@   )Úis_independentÚis_plottingrf   Únr^   s        r   r?   r?   ‚  sR   € ð
 ð %Øˆˆà$ˆØð 0ÝÔ" Mˆ1ˆˆåÔ" Kˆ1ˆð Ø$% q¨! 9ñ-ð -r   N)rx   r   Úplot_objectr   Úutilr   Úsympy.core.symbolr	   Úsympy.core.sympifyr
   Úsympy.geometry.entityr   Úsympy.utilities.iterablesr   r   r?   r\   r   r   ú<module>r�      sÏ   ðØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø #Ð #Ð #Ð #Ð #Ð #Ø %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ø &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðu"ð u"ð u"ð u"ð u"ˆzñ u"ô u"ð u"ðp-ð -ð -ð -ð -r   