
    sg7                     H    d dl mZ d dlmZ d dlmZ d dlmZ  G d d      Zy)    )S)Symbol)sympify)Integerc                       e Zd ZdZd\  ZZZZd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zed        Z ee
e      Z eee      Z eee      Z eee      Z ee      Zd Zed        Zd Zd Zd Zed        Zed        Z ed        Z!d Z"y)PlotIntervalz
    )NNNNc                       fd}|S )Nc                     | j                   | j                  | j                  | j                  fD ]  }|t	        d        | g|i |S )NzPlotInterval is incomplete.)_v_v_min_v_max_v_steps
ValueError)selfargskwargsgfs       Z/var/www/html/venv/lib/python3.12/site-packages/sympy/plotting/pygletplot/plot_interval.pycheckz,PlotInterval.require_all_args.<locals>.check   sU    ggt{{DKKG D9$%BCCD T+D+F++     )r   r   s   ` r   require_all_argszPlotInterval.require_all_args   s    	,
 r   c                 B   t        |      dk(  rut        |d   t              r| j                  |d          y t        |d   t              r	 t        |d         }n*t        |d   t        t        f      r|d   }nt        d      t        |t        t        f      rt        |      dkD  rd}t        |      t        |      }t        |      dkD  r.|d   t        |d   t              r|j                  d      | _        t        |      dv rR|j                  d      | _        |j                  d      | _        t        |      dk(  r|j                  d      | _        y y t        |      dk(  r|j                  d      | _        y y # t        $ r d}t        ||d   z        w xY w)N   r   zCould not interpret string %s.zNot an interval.   z9PlotInterval must be a tuple or list of length 4 or less.)      )len
isinstancer   	fill_fromstreval	TypeErrorr   tuplelistr   popvv_minv_maxv_steps)r   r   s_eval_errorf_errors       r   __init__zPlotInterval.__init__   si   t9>$q'<0tAw'DGS)?Q=D DGeT]3Aw !344$.#d)a-QGW%%Dzt9q=d1goDGV1LXXa[DFt9!DJ!DJ4yA~#xx{ Y!^88A;DL ' ! ?#CL$\T!W%=>>?s   F Fc                     | j                   S N)r   r   s    r   get_vzPlotInterval.get_v2   s    wwr   c                 \    |d | _         y t        |t              st        d      || _         y )Nzv must be a SymPy Symbol.)r   r    r   r   )r   r(   s     r   set_vzPlotInterval.set_v5   s.    9DG!V$899r   c                     | j                   S r0   )r   r1   s    r   	get_v_minzPlotInterval.get_v_min=       {{r   c                     |d | _         y 	 t        |      | _         t        | j                   j                                y # t        $ r t        d      w xY w)Nz+v_min could not be interpreted as a number.)r   r   floatevalfr$   r   )r   r)   s     r   	set_v_minzPlotInterval.set_v_min@   T    =DK	L!%.DK$++##%& 	LJKK	L   3A   Ac                     | j                   S r0   )r   r1   s    r   	get_v_maxzPlotInterval.get_v_maxJ   r7   r   c                     |d | _         y 	 t        |      | _         t        | j                   j                                y # t        $ r t        d      w xY w)Nz+v_max could not be interpreted as a number.)r   r   r9   r:   r$   r   )r   r*   s     r   	set_v_maxzPlotInterval.set_v_maxM   r<   r=   c                     | j                   S r0   )r   r1   s    r   get_v_stepszPlotInterval.get_v_stepsW   s    }}r   c                     |d | _         y t        |t              rt        |      }nt        |t              st	        d      |t
        j                  k  rt	        d      || _         y )Nz(v_steps must be an int or SymPy Integer.zv_steps must be positive.)r   r    intr   r   r   Zero)r   r+   s     r   set_v_stepszPlotInterval.set_v_stepsZ   sZ    ? DMgs#g&GGW-GHHaff899r   c                      | j                   dz   S )Nr   )r+   r1   s    r   	get_v_lenzPlotInterval.get_v_lenf   s    ||ar   c                     |j                   |j                   | _         |j                  |j                  | _        |j                  |j                  | _        |j                  |j                  | _        y y r0   )r(   r)   r*   r+   )r   bs     r   r!   zPlotInterval.fill_fromp   sZ    33?SSDF77DJ77DJ99 99DL !r   c                  ~    t        |       dk(  rt        | d   t              r| d   S 	 t        |  S # t        $ r Y yw xY w)zd
        Returns a PlotInterval if args can be interpreted
        as such, otherwise None.
        r   r   N)r   r    r   r   )r   s    r   	try_parsezPlotInterval.try_parsez   sG     t9>ja,?7N	&& 		s   0 	<<c                     dj                  t        | j                        t        | j                        t        | j                        t        | j
                        g      S )N,)joinr"   r(   r)   r*   r+   r1   s    r   	_str_basezPlotInterval._str_base   sB    xxTVVc$**oTZZ#dll*;= > 	>r   c                 (    d| j                         z  S )zO
        A string representing the interval in class constructor form.
        zPlotInterval(%s)rQ   r1   s    r   __repr__zPlotInterval.__repr__   s     "T^^%566r   c                 (    d| j                         z  S )zB
        A string representing the interval in list form.
        z[%s]rS   r1   s    r   __str__zPlotInterval.__str__   s     )**r   c                      y r0   r   r1   s    r   assert_completezPlotInterval.assert_complete   s    r   c              #      K   | j                   | j                  z
  | j                  z  }t        | j                  dz         D ]!  }| j                  |t	        |      z  z   }| # yw)zU
        Yields v_steps+1 SymPy numbers ranging from
        v_min to v_max.
        r   N)r*   r)   r+   ranger   )r   dias       r   vrangezPlotInterval.vrange   s[      ZZ$**$4t||a'( 	A

a'!*n-AG	s   A$A&c              #     K   | j                   | j                  z
  | j                  z  }| j                  |t        j                  z  z   }t        | j                        D ](  }| j                  |t        |dz         z  z   }||f |}* yw)z|
        Yields v_steps pairs of SymPy numbers ranging from
        (v_min, v_min + step) to (v_max - step, v_max).
        r   N)r*   r)   r+   r   rF   rZ   r   )r   r[   r]   r\   rK   s        r   vrange2zPlotInterval.vrange2   sz      ZZ$**$4JJ!aff*%t||$ 	A

a'!a%.01AQ$JA	s   BB
c              #   l   K   | j                         D ]  }t        |j                                 y wr0   )r^   r9   r:   )r   r\   s     r   frangezPlotInterval.frange   s,      	#A	""	#s   24N)#__name__
__module____qualname____doc__r   r   r   r   r   r.   r2   r4   r6   r;   r?   rA   rC   rG   rI   propertyr(   r)   r*   r+   v_lenr!   staticmethodrM   rQ   rT   rV   rX   r^   r`   rb   r   r   r   r   r      s   #9 B'<LL
      	AY	*EY	*E{K0GYE% 
 
>7+     
 
#r   r   N)	sympy.core.singletonr   sympy.core.symbolr   sympy.core.sympifyr   sympy.core.numbersr   r   r   r   r   <module>rn      s    " $ & &n# n#r   