Ë
    âQ(hÇ.  ã                   óœ   — d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	Z	d dl
mZ g d¢Z G d„ d«      Zd„ Zd„ Z	 	 	 	 dd	„Z G d
„ d«      Zy)é    N)Ú_pep440)Úassert_)Úwith_special_errorsÚassert_func_equalÚFuncDatac                   ó   — e Zd Zd„ Zy)ÚMissingModulec                 ó   — || _         y ©N)Úname)Úselfr   s     úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/special/_testutils.pyÚ__init__zMissingModule.__init__   s	   € Øˆ�	ó    N)Ú__name__Ú
__module__Ú__qualname__r   © r   r   r	   r	      s   „ ór   r	   c                 óF  — t        | «      t        u r-t        j                  j	                  | j
                  › d�¬«      S t        j                  j                  t        j                  | j                  «      t        j                  |«      k  | j                  › d|› d�¬«      S )Nz is not installed©Úreasonz version >= z	 required)Útyper	   ÚpytestÚmarkÚskipr   Úskipifr   ÚparseÚ__version__ÚVersionr   )ÚmoduleÚmin_vers     r   Úcheck_versionr"      sƒ   € ÜˆFƒ|”}Ñ$Ü�{‰{×Ñ¨&¯+©+¨Ð6GÐ'HÐÓIÐIÜ�;‰;×ÑÜ�‰�f×(Ñ(Ó)¬G¯O©O¸GÓ,DÑDØ—/‘/Ð" ,¨w¨i°yÐAð ó ð r   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )zc
    Enable special function errors (such as underflow, overflow,
    loss of precision, etc.)
    c                  óp   •— t        j                  d¬«      5   ‰| i |¤Ž}d d d «       |S # 1 sw Y   S xY w)NÚraise©Úall)ÚscÚerrstate)ÚaÚkwÚresÚfuncs      €r   Úwrapperz$with_special_errors.<locals>.wrapper*   s6   ø€ ä�[‰[˜WÔ%ñ 	!Ù˜�.˜R‘.ˆC÷	!àˆ
÷	!àˆ
ús   ˜	+«5)Ú	functoolsÚwraps)r-   r.   s   ` r   r   r   %   s'   ø€ ô
 ‡_�_�TÓóó ðð €Nr   c                 ó¶  — t        |d«      rt        |«      }t        j                  |«      }|j                  dk(  r	|d d …d f   }|j
                  d   }t        |d«      r|}d }|}n9t        j                  ||f   }t        t        ||j
                  d   «      «      }d }t        | |t        t        |«      «      |||||||	||
|¬«      }|j                  «        y )NÚnexté   r   )
Úresult_columnsÚresult_funcÚrtolÚatolÚparam_filterÚknownfailureÚnan_okÚ
vectorizedÚignore_inf_signÚdistinguish_nan_and_inf)
ÚhasattrÚlistÚnpÚasarrayÚndimÚshapeÚc_Úranger   Úcheck)r-   ÚresultsÚpointsr6   r7   r8   r9   r;   Údtyper:   r<   r=   ÚnparamsÚdatar4   r5   Úfdatas                    r   r   r   7   sÔ   € ô ˆv�vÔä�f“ˆä�Z‰Z˜Ó€FØ‡{�{�aÒØš˜$˜‘ˆØ�l‰l˜1‰o€Gäˆw˜
Ô#àˆØˆØ‰ô �u‰u�V˜W�_Ñ%ˆÜœe G¨T¯Z©Z¸©]Ó;Ó<ˆØˆä�T˜4¤¤e¨G£nÓ!5Ø$2ÀØ T¸Ø".°vÈ*Ø%4Ø-DôF€Eð 
‡K�K…Mr   c                   ó4   — e Zd ZdZ	 	 	 	 dd„Zd„ Zdd„Zd„ Zy)	r   aí  
    Data set for checking a special function.

    Parameters
    ----------
    func : function
        Function to test
    data : numpy array
        columnar data to use for testing
    param_columns : int or tuple of ints
        Columns indices in which the parameters to `func` lie.
        Can be imaginary integers to indicate that the parameter
        should be cast to complex.
    result_columns : int or tuple of ints, optional
        Column indices for expected results from `func`.
    result_func : callable, optional
        Function to call to obtain results.
    rtol : float, optional
        Required relative tolerance. Default is 5*eps.
    atol : float, optional
        Required absolute tolerance. Default is 5*tiny.
    param_filter : function, or tuple of functions/Nones, optional
        Filter functions to exclude some parameter ranges.
        If omitted, no filtering is done.
    knownfailure : str, optional
        Known failure error message to raise when the test is run.
        If omitted, no exception is raised.
    nan_ok : bool, optional
        If nan is always an accepted result.
    vectorized : bool, optional
        Whether all functions passed in are vectorized.
    ignore_inf_sign : bool, optional
        Whether to ignore signs of infinities.
        (Doesn't matter for complex-valued functions.)
    distinguish_nan_and_inf : bool, optional
        If True, treat numbers which contain nans or infs as
        equal. Sets ignore_inf_sign to be True.

    Nc                 óº  — || _         || _        |
| _        t        |d«      s|f}t	        |«      | _        |�.t        |d«      s|f}t	        |«      | _        |�"d}t        |«      ‚|�d | _        nt        d«      ‚|| _        || _	        || _
        t        |d«      s|f}|| _        |	| _        || _        || _        || _        || _        | j                   sd| _        y y )NÚ__len__z5Only result_func or result_columns should be providedz7Either result_func or result_columns should be providedT)r-   rK   Údatanamer>   ÚtupleÚparam_columnsr4   Ú
ValueErrorr5   r6   r7   r8   r9   r:   r;   r<   r=   )r   r-   rK   rR   r4   r5   r6   r7   r8   r9   rP   r:   r;   r<   r=   Úmessages                   r   r   zFuncData.__init__�   sø   € ð ˆŒ	ØˆŒ	Ø ˆŒÜ�} iÔ0Ø*Ð,ˆMÜ" =Ó1ˆÔØÐ%Ü˜>¨9Ô5Ø"0Ð!2�Ü"'¨Ó"7ˆDÔØÐ&ØQ�Ü  Ó)Ð)ØÐ$Ø"&ˆDÕäÐVÓWÐWØ&ˆÔØˆŒ	ØˆŒ	Ü�| YÔ/Ø(˜?ˆLØ(ˆÔØ(ˆÔØˆŒØ$ˆŒØ.ˆÔØ'>ˆÔ$Ø×+Ò+Ø#'ˆDÕ ð ,r   c                 ó"  — t        j                  |t         j                  «      st        j                  t        «      }t        j
                  |«      }| j                  | j                  }}|€d|j                  z  }|€d|j                  z  }||fS )Né   )
r@   Ú
issubdtypeÚinexactrI   ÚfloatÚfinfor6   r7   ÚepsÚtiny)r   rI   Úinfor6   r7   s        r   Úget_toleranceszFuncData.get_tolerances¤   sm   € Ü�}‰}˜U¤B§J¡JÔ/Ü—H‘HœU“OˆEÜ�x‰x˜‹ˆØ—Y‘Y §	¡	ˆdˆØˆ<Ø�T—X‘X‘:ˆDØˆ<Ø�T—Y‘Y‘;ˆDØ�TˆzÐr   c                 ó4  ‡ ‡*‡+— t        j                  dt        «      }‰ j                  r t	        j
                  ‰ j                  ¬«       |€‰ j                  }|€|j                  }n|j                  |«      }‰ j                  |«      \  }}‰ j                  r}t        j                  |j                  d   ft        j                  «      }t        ‰ j                   ‰ j                  «      D ]#  \  Š*}|sŒ	|t#         ||dd…‰*f   «      «      z  }Œ% ||   }g Š+t%        ‰ j                   «      D ]®  \  }	Š*t        j&                  ‰*«      rAt)        ‰*j*                  «      Š*‰+j-                  |dd…‰*f   j                  t.        «      «       Œ\|r9|	t1        |«      k  r+‰+j-                  |dd…‰*f   j                  ||	   «      «       Œ—‰+j-                  |dd…‰*f   «       Œ° dˆ+ˆ fd„	}
 |
‰ j2                  «      }‰ j4                  �+t7        ‰ j4                  D �cg c]  }|dd…|f   ‘Œ c}«      }nHd}‰ j8                  r&t1        |«      dk(  rt        j:                  |d   «      } |
‰ j<                  |¬«      }t?        t1        |«      t1        |«      k(  «       t%        t        ||«      «      D �]Ù  \  }\  }}t        j@                  |j                  t        jB                  «      s‰ jD                  rUt        jF                  |«      }t        jF                  |«      }t        jF                  |«      }t        jF                  |«      }nTt        jH                  |«      }t        jH                  |«      }t        jJ                  |«      }t        jJ                  |«      }t        j:                  |«      }t        j:                  |«      }t        jL                  d¬	«      5  t        jN                  |«      }d|t        jP                  |«       <   t        jN                  ||z
  «      }d|t        jP                  |«       <   |t        jN                  |«      z  }d|t        jP                  |«       <   ddd«       ||z  z   k  }||k(  }||k(  }||k(  }||z  |z  |z   }|jR                  } ‰ j8                  r"|| z  }|| z  }| ||z  jU                  «       z  } ‰ jV                  sZ‰ j8                  sNt        jF                  |«      }!t        jF                  |«      }"|!|z  ||"z  z  }#||# z  }| |#jU                  «       z  } t        jX                  |«      s�Œ£d
g}$|$j-                  d||   j[                  «       d›�«       |$j-                  d|   j[                  «       d›�«       |$j-                  dt        jT                  |«      | |fz  «       t        j\                  |«      d   D ]ˆ  Š*t)        ‰*«      Š*ˆ*fd„}%dj_                  ta        |%‰+«      «      }&dj_                  ta        |%|«      «      }'dj_                  ta        |%|«      «      }( |%|«      })|$j-                  |&› d|'› d|(› d|)› d�«       ŒŠ t?        ddj_                  |$«      «       �ŒÜ yc c}w # 1 sw Y   �Œ'xY w)z,Check the special function against the data.Úerrisinstancer   Nr   c                 ó–  •— ‰j                   r | ‰Ž }n�g }t        t        ‰d   «      «      D ]l  }|�%||   r |j                  t        j
                  «       Œ*|j                   | t        t        t        ‰«      «      D �cg c]
  }‰|   |   ‘Œ c}«      Ž «       Œn t	        j                  |«      }t        |t        «      s|f}|S c c}w )Nr   )	r;   rE   ÚlenÚappendr@   ÚnanrQ   rA   Ú
isinstance)r-   Ú	skip_maskÚgotÚjÚiÚparamsr   s        €€r   Úeval_func_at_paramsz+FuncData.check.<locals>.eval_func_at_paramsÖ   s²   ø€ Ø�ŠÙ˜F�m‘à�Üœs 6¨!¡9›~Ó.ò Y�AØ Ð,°¸1²ØŸ
™
¤2§6¡6Ô*Ø Ø—J‘J™t¤UÄ%ÌÈFËÓBTÖ+U¸Q¨F°1©I°a«LÒ+UÓ%VÐWÕXð	Yô
 —j‘j “o�Ü˜c¤5Ô)Ø�f�ØˆJùò	 ,Vs   Á?Cr3   )rf   Úignorer&   Ú zMax |adiff|: ÚgzMax |rdiff|: zCBad results (%d out of %d) for the following points (in output %d):c                 ó>   •— dt        j                  | ‰   d¬«      z  S )Nz%30sé   )Ú	precision)r@   Úarray2string)Úxrh   s    €r   ÚfmtzFuncData.check.<locals>.fmt.  s   ø€ Ø%¬¯©¸¸!¹ÈÔ(KÑKÐKr   z  z => z != z	  (rdiff ú)Fú
r   )1ÚoperatorÚmethodcallerÚAssertionErrorr9   r   ÚxfailrK   rI   Úastyper^   r8   r@   ÚonesrC   Úbool_ÚziprR   r?   Ú	enumerateÚiscomplexobjÚintÚimagrc   Úcomplexrb   r-   r4   rQ   r:   Úisnanr5   r   rW   Úcomplexfloatingr<   ÚisinfÚisposinfÚisneginfr)   ÚabsoluteÚisfiniteÚsizeÚsumr=   ÚanyÚmaxÚnonzeroÚjoinÚmap),r   rK   rI   ÚdtypesÚ__tracebackhide__r6   r7   Ú
param_maskÚfilterÚidxrk   rg   ÚicolÚwantedrf   Ú
output_numrs   ÚyÚpinf_xÚpinf_yÚminf_xÚminf_yÚnan_xÚnan_yÚabs_yÚdiffÚrdiffÚtol_maskÚ	pinf_maskÚ	minf_maskÚnan_maskÚbad_jÚpoint_countÚinf_xÚinf_yÚboth_nonfiniteÚmsgrt   r*   ÚbÚcÚdrh   rj   s,   `                                         @@r   rF   zFuncData.check¯   s›  ú€ ä$×1Ñ1Øœ^ó
Ðð ×ÒÜ�L‰L × 1Ñ 1Õ2àˆ<Ø—9‘9ˆDàˆ=Ø—J‘J‰Eà—;‘;˜uÓ%ˆDà×(Ñ(¨Ó/‰
ˆˆdð ×ÒÜŸ™ $§*¡*¨Q¡-Ð!1´2·8±8Ó<ˆJÜ  ×!3Ñ!3°T×5FÑ5FÓGò :‘	��6ÚØ¤$¡v¨d²1°Q°3©iÓ'8Ó"9Ñ9‘Jð:ð ˜
Ñ#ˆDð ˆÜ × 2Ñ 2Ó3ò 	)‰FˆC�Ü�‰˜qÔ!Ü˜Ÿ™“K�Ø—‘˜d¢1 Q 3™i×.Ñ.¬wÓ7Õ8Ù˜C¤# f£+Ò-Ø—‘˜d¢1 a 4™j×/Ñ/°°s±Ó<Õ=à—‘˜d¢1 Q 3™iÕ(ð	)ö	ñ  " $§)¡)Ó,ˆð ×ÑÐ*ä°T×5HÑ5HÖI¨T˜D¢ 4 ›LÒIÓJ‰Fð ˆIØ�{Š{œs 3›x¨1š}äŸH™H S¨¡VÓ,�	Ù(¨×)9Ñ)9ÀYÔOˆFô 	”�C“œC ›KÑ'Ô(ä"+¬C°°VÓ,<Ó"=ó >	/ÑˆJ™˜˜AÜ�}‰}˜QŸW™W¤b×&8Ñ&8Ô9¸T×=QÒ=QÜŸ™ !›�ÜŸ™ !›�ÜŸ™ !›�ÜŸ™ !›‘äŸ™ Q›�ÜŸ™ Q›�ÜŸ™ Q›�ÜŸ™ Q›�Ü—H‘H˜Q“KˆEÜ—H‘H˜Q“KˆEä—‘ Ô*ñ /ÜŸ™ A›�Ø-.�”r—{‘{ 5Ó)Ð)Ñ*Ü—{‘{ 1 q¡5Ó)�Ø+,�”b—k‘k $Ó'Ð'Ñ(àœrŸ{™{¨1›~Ñ-�Ø-.�”r—{‘{ 5Ó)Ð)Ñ*÷/ð   t¨E¡zÑ 1Ñ1ˆHØ 6Ñ)ˆIØ 6Ñ)ˆIà ™ˆHà Ñ*¨YÑ6¸ÑAÐBˆEàŸ*™*ˆKØ�{Š{Ø˜%˜‘�Ø˜%˜‘�Ø ¨¡×2Ñ2Ó4Ñ4�à×/Ò/¸¿ºäŸ™ ›�ÜŸ™ ›�Ø"'¨%¡-°E¸E±MÑ!B�Ø˜.˜Ñ(�Ø˜~×1Ñ1Ó3Ñ3�ä�v‰v�eŽ}à�d�Ø—
‘
˜]¨4°©;¯?©?Ó+<¸QÐ*?Ð@ÔAØ—
‘
˜]¨5°©<×+;Ñ+;Ó+=¸aÐ*@ÐAÔBØ—
‘
ð -ä Ÿf™f U›m¨[¸*ÐFñGô Hô Ÿ™ EÓ*¨1Ñ-ò B�AÜ˜A›�AôLàŸ	™	¤# c¨6Ó"2Ó3�AØŸ	™	¤# c¨3£-Ó0�AØŸ	™	¤# c¨6Ó"2Ó3�AÙ˜E›
�AØ—J‘J !  D¨¨¨4°¨s°)¸A¸3¸aÐ@ÕAðBô ˜˜tŸy™y¨›~Ö.ñ}>	/ùò J÷4/ñ /ús   ÈZÏBZÚZ	c                 óh  — t        j                  t        t        t         j                  | j
                  «      «      «      rd}nd}| j                  rFd| j                  j                  › |› dt        j                  j                  | j                  «      › d�S d| j                  j                  › |› d�S )zPretty-printingz
 (complex)rm   z
<Data for z: ú>)r@   r�   r?   r‘   r€   rR   rP   r-   r   ÚosÚpathÚbasename)r   Ú
is_complexs     r   Ú__repr__zFuncData.__repr__7  s’   € ä�6‰6”$”sœ2Ÿ?™?¨D×,>Ñ,>Ó?Ó@ÔAØ%‰JàˆJØ�=Š=Ø  §¡×!3Ñ!3Ð 4°Z°LÀÜ—w‘w×'Ñ'¨¯©Ó6Ð7°qð:ð ;ð   §	¡	× 2Ñ 2Ð3°J°<¸qÐAÐAr   )NNNNNNNFTFT)NNN)r   r   r   Ú__doc__r   r^   rF   r·   r   r   r   r   r   X   s0   „ ñ&ðP BFØFJØLPØ@Dó!(òF	óF/óP
Br   r   )	NNNNTNFFT)r³   r/   rw   Ú
scipy._libr   Únumpyr@   Únumpy.testingr   r   Úscipy.specialÚspecialr(   Ú__all__r	   r"   r   r   r   r   r   r   ú<module>r¿      sY   ðÛ 	Û Û Ý ã Ý !Û å â
B€÷ñ ò
ò
ð$ >BØ6:Ø:?ØEIó÷BiBò iBr   