Ë
    ÏÍ:jXx  ã            
       óâ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Zd dlZ	 d dlZdZd dlmZ d dlmZmZmZmZmZmZmZmZ d dlmZ d d	lmZ d d
lm Z  	 d dl!m"Z" dZ#	 d dl%Z%dZ&d„ Z(d„ Z) ejT                  dd¬«      d„ «       Z+e&sejT                  d„ «       Z,h d£Z- ej\                  edej^                  j`                  ¬«      gZ1 e2«       Z3 e2«       Z4e�r|	 d dl5Z5e1jm                   ej\                  e5dej^                  j`                  ¬«      «        e jn                  e5jp                  «       e jr                  d«      k  r ed«      ‚ e5jt                  d¬«       	 d dl;Z;e1jm                   ej\                  e;dej^                  j`                  ¬«      «        e;jx                  e«       edk7  re3j{                  d«        ej|                  dd¬«      Z?e?dk(  r e;j€                  e;j‚                  «       ne?dk7  r eBd e?› d!�«      ‚	 d dlCZCe1jm                   ej\                  eCd"ej^                  j`                  ¬«      «       e3j{                  d"«        ejˆ                  d#d$eE¬%«       d d&lFmGZG [G	 d dlHZIe1jm                   ej\                  eIj                  d'ej^                  j`                  ej^                  j”                  g¬«      «       eIj–                  j™                  d(d«       eIj–                  j™                  d)d«       eIj–                  j™                  d* eIjš                  e«      d    «       edk7  re3j{                  d'«       e4j{                  d'«       	 d dlNmOZP e1jm                   ej\                  ePd+ej^                  j`                  ej^                  j”                  g¬«      «       e4j{                  d+«       e1D � ch c]  } | j¢                  ’Œ c} ZReRe-z
  rJ ‚ eSeeT«      rd ejª                  «       d,vrQ e2 e j¬                  e«      «      ZWeWd-hk7  r3eWeRz
  rd.eR› d/eW› �ZX eBeX«      ‚e1D �cg c]  }|j¢                  eWv r|‘Œ c}Z1 ejT                  e1¬0«      d1„ «       ZYej^                  jµ                  ed2¬3«      Z[d4„ Z\d5ejº                  d6e	d7   d8dfd9„Z^ejT                  d:„ «       ZMerÊej¾                  jÁ                  ejÂ                  jÅ                   ejÆ                  «       d;«      «       ejÈ                  jË                  d<dd¬=«       ejÈ                  jË                  d>dddd efejÎ                  «      ¬?«       ejÐ                  jÓ                  d@d>«      ZjejÈ                  j×                  ej«       e#rqedMdA„«       Zlele"_m         e2g dB¢«      e"_n        g dC¢e"_o        dDdDdEdFdGdHœe"_p         e2dIg«      e"_q        dJg dK¢ie"_r        de"_s        e"jè                  j{                  dL«       yy# e$ r dZY �Œ×w xY w# e$$ r dZ#Y �Œ°w xY w# e'$ r dZ&Y �Œ·w xY w# e$ r Y �ŒÉw xY w# e$ r Y �Œ)w xY w# e$ r Y �ŒËw xY w# e$ r Y �Œìw xY w# e$ r Y �Œ’w xY wc c} w c c}w )Né    N)Úcontextmanager)ÚLiteralTF)Úget_fpu_mode)ÚSCIPY_ARRAY_APIÚSCIPY_DEVICEÚarray_namespaceÚ
default_xpÚis_cupyÚis_daskÚis_jaxÚis_torch)ÚFPUModeChangeWarning)Úpatch_lazy_xp_functions)Úversion)Ú	dt_configc                 óº  — | j                  dd«       | j                  dd«       | j                  dd«       | j                  dd«       | j                  dd«       | j                  dd«       | j                  dd«       	 d	d
l}	 d	dlm} t
        s6| j                  dd«       | j                  dd«       | j                  dd«       t        j                  dk(  r@t        j                  dk  r,t        j                  dk7  rt        j                  dd¬«       y
y
y
y
# t        $ r | j                  dd«       Y Œ´w xY w# t        $ r | j                  dd«       Y ŒÎw xY w)a  
    Add pytest markers to avoid PytestUnknownMarkWarning

    This needs to contain all markers that are SciPy-specific, as well as
    dummy fallbacks for markers defined in optional test packages.

    Note that we need both the registration here *and* in `pytest.ini`.
    Úmarkerszslow: Tests that are very slow.zHxslow: mark test as extremely slow (not run unless explicitly requested)z8xfail_on_32bit: mark test as failing on 32-bit platformsz;array_api_backends: test iterates on all array API backendsz±skip_xp_backends(backends, reason=None, np_only=False, cpu_only=False, eager_only=False, exceptions=None): mark the desired skip configuration for the `skip_xp_backends` fixturez´xfail_xp_backends(backends, reason=None, np_only=False, cpu_only=False, eager_only=False, exceptions=None): mark the desired xfail configuration for the `xfail_xp_backends` fixturez´uses_xp_capabilities(status, funcs=None, reason=None): mark whether pytest markers for array API backends are  generated from the xp_capabilities entries for one or  more functionsr   Nz.timeout: mark a test for a non-default timeout)Úparse_durationz8fail_slow: mark a test for a non-default timeout failurezUparallel_threads_limit(n): run the given test function in parallel using `n` threads.z8thread_unsafe: mark the test function as single-threadedzCiterations(n): run the given test function `n` times in each threadÚposix)é   é   ÚcygwinÚ
forkserverT)Úforce)Úaddinivalue_lineÚpytest_timeoutÚ	ExceptionÚpytest_fail_slowr   ÚPARALLEL_RUN_AVAILABLEÚosÚnameÚsysÚversion_infoÚplatformÚmultiprocessingÚset_start_method)Úconfigr   r   s      úc/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/conftest.pyÚpytest_configurer)   )   s„  € ð ×Ñ˜IØ)ô+à
×Ñ˜IØRôTà
×Ñ˜IØBôDà
×Ñ˜IØEôGà
×Ñ˜Ið
.ô0ð ×Ñ˜Ið
/ô1ð ×Ñ˜Ið/ô1ðIÛðSõ 	4õ
 "Ø×ÑØð!ô	"ð 	×ÑØØFô	
ð 	×ÑØØQô	
ô
 
‡w�w�'Òœc×.Ñ.°Ò8¼S¿\¹\ÈXÒ=Uô 	×(Ñ(¨¸TÖBð	 >VÐ8Ðøô3 ò IØ×ÑØÐGö	IðIûô ò SØ×ÑØÐQö	SðSús$   Â D ÂD< ÄD9Ä8D9Ä<EÅEc                 óx  — | j                  d«      }|�A	 t        t        j                  j	                  dd«      «      }|st        j                  d«       | j                  d«      }|�Gt        j                  d«      j                  dk  r%t        j                  d	|j                  d   › �«       t        j                  «       5  t        j                  d
t        j                   «       	 ddlm} d}|rc	 t        t        j                  d   «      }t        j*                  d«      s1t        j,                  «       dz  }t/        ||z  d«      }	  |d¬«       d d d «       y # t
        $ r d}Y �Œ/w xY w# t&        $ r d}Y Œ�w xY w# t(        $ r Y d d d «       y w xY w# t&        $ r Y d d d «       y w xY w# 1 sw Y   y xY w)NÚxslowÚSCIPY_XSLOWÚ0Fz@very slow test; set environment variable SCIPY_XSLOW=1 to run itÚxfail_on_32bitr   é   z&Fails on our 32-bit test platform(s): Úignore)Úthreadpool_limitsTÚPYTEST_XDIST_WORKER_COUNTÚOMP_NUM_THREADSé   é   Úblas)Úuser_api)Úget_closest_markerÚintr    ÚenvironÚgetÚ
ValueErrorÚpytestÚskipÚnpÚintpÚitemsizeÚxfailÚargsÚwarningsÚcatch_warningsÚsimplefilterÚ PytestUnraisableExceptionWarningÚthreadpoolctlr1   r   ÚKeyErrorÚgetenvÚ	cpu_countÚmax)ÚitemÚmarkÚvr1   ÚHAS_THREADPOOLCTLÚxdist_worker_countÚmax_openmp_threadsÚthreads_per_workers           r(   Úpytest_runtest_setuprT   k   s®  € Ø×"Ñ" 7Ó+€DØÐð	Ü”B—J‘J—N‘N =°#Ó6Ó7ˆAñ Ü�K‰Kð Kô Là×"Ñ"Ð#3Ó4€DØÐœBŸG™G A›J×/Ñ/°!Ò3Ü�‰Ð=¸d¿i¹iÈ¹l¸^ÐLÔMô 
×	 Ñ	 Ó	"ñ Ü×Ñ˜h¬×(OÑ(OÔPð	&Ý7à $Ðñ
 ð
Ü%(¬¯©Ð4OÑ)PÓ%QÐ"ô
 —9‘9Ð.Ô/Ü%'§\¡\£^°qÑ%8Ð"Ü%(Ð);Ð?QÑ)QÐSTÓ%UÐ"ðÙ%Ð&8À6ÕJ÷5ð øô ò 	Ø‹Að	ûô$ ò 	&à %Òð	&ûô ò à÷)ð ð$ûô !ò ð ÷=ð ð6ú÷7ð úsƒ   •)E Ã%F0Ã)E1Ã1F0Ã4FÄ;F0Å
FÅE.Å-E.Å1E?Å<F0Å>E?Å?F0Æ	FÆF0ÆFÆF0Æ	F-Æ"F0Æ,F-Æ-F0Æ0F9Úfunction)ÚscopeÚautousec              #   ó’   K  — t        «       }d–— t        «       }||k7  r&t        j                  d|d›d|d›d�t        d¬«       yy­w)z9
    Check FPU mode was not changed during the test.
    NzFPU mode changed from z#xz to z during the testr   )ÚcategoryÚ
stacklevel)r   rD   Úwarnr   )ÚrequestÚold_modeÚnew_modes      r(   Úcheck_fpu_moder_   œ   sT   è ø€ ô
 ‹~€HÛ	Ü‹~€Hà�8ÒÜ�‰Ð.¨x¸¨m¸4ÀÈ¸}ð M!ð !ä3Àö	Cð ùs   ‚AAc                   ó   — y)Nr5   © ra   ó    r(   Únum_parallel_threadsrc   ¬   s   € àrb   >   ÚcupyÚnumpyÚtorchÚarray_api_strictú	jax.numpyú
dask.arrayre   )ÚidÚmarksrg   z2.3z'array-api-strict must be >= version 2.3z2025.12)Úapi_versionrf   ÚcpuÚSCIPY_DEFAULT_DTYPEÚfloat64)ÚdefaultÚfloat32zUSCIPY_DEFAULT_DTYPE env var, if set, can only be either 'float64' or 'float32'. Got 'z
' instead.rd   r0   z#cupyx.jit.rawkernel is experimental©rY   )Úsignalrh   Újax_enable_x64Újax_default_matmul_precisionÚjax_default_deviceri   )Ú1ÚtrueÚallry   z!'--array-api-backend' must be in z; got )Úparamsc              #   ó¢  K  — t        | d«       t        | d«       | j                  j                  d«      €t        j                  dd¬«       | j
                  }t        |j                  d«      «      }t        r9t        | | j
                  ¬«      5  t        |«      5  |–— ddd«       ddd«       y|–— y# 1 sw Y   ŒxY w# 1 sw Y   yxY w­w)	a´  Run the test that uses this fixture on each available array API library.

    You can select all and only the tests that use the `xp` fixture by
    passing `-m array_api_backends` to pytest.

    You can select where individual tests run through the `@skip_xp_backends`,
    `@xfail_xp_backends`, and `@skip_xp_invalid_arg` pytest markers.

    Please read: https://docs.scipy.org/doc/scipy/dev/api-dev/array_api.html#adding-tests
    r>   rB   Úuses_xp_capabilitiesNzŒtest uses `xp` fixture without drawing from `xp_capabilities`  but is not explicitly marked with ``pytest.mark.uses_xp_capabilities(False)``r   )rZ   ©r\   Úxp)Úskip_or_xfail_xp_backendsÚnoder8   rD   r[   Úparamr   Úemptyr   r   r	   r}   s     r(   r~   r~   0  s¿   è ø€ ô ˜g vÔ.ô ˜g wÔ/ð ‡|�|×&Ñ&Ð'=Ó>ÐFÜ�‰ð;ð õ		
ð 
�‰€Bä	˜Ÿ™ !›Ó	%€Båô %¨W¸¿¹ÔGñ 	ô
 ˜B“ñ Ø’÷÷	ð 	ð ‹÷ð ú÷	ð 	üs6   ‚BCÂCÂB7Â!CÂ)CÂ7C 	Â<CÃCÃCzsTest involves masked arrays, object arrays, or other types that are not valid input when `SCIPY_ARRAY_API` is used.©Úreasonc           	      ó°  — t        | j                  j                  |› d�«      «      }t        D �ci c]  }|g “Œ }}|D �]b  }t	        |j
                  «      h d£z
  }|rt        d|› �«      ‚t	        |j
                  j                  dg «      «      }|t        z
  }t        |t        z
  «      x}rt        d|› dt        t        «      › �«      ‚|j
                  j                  dd«      rT|j
                  j                  d	«      xs d
}	|j                  «       D ]!  \  }}
|dk7  sŒ||vsŒ|
j                  |	«       Œ# n»|j
                  j                  dd«      rB|j
                  j                  d	«      xs d}	t        |z
  D ]  }||   j                  |	«       Œ n]|j
                  j                  dd«      rA|j
                  j                  d	«      xs d}	t        |z
  D ]  }||   j                  |	«       Œ t        |j                  «      dk(  r“|j                  d   }|t        vrt        d|› dt        t        «      › �«      ‚|j
                  j                  d	«      xs d|› �}	||   j                  d|	«       dD ]   }||j
                  v sŒt        |› d|› �«      ‚ �Œdt        |j                  «      dk(  r·t!        |j                  d   t"        t%        d«      z  «      rŽ|j                  \  }}|t        vrt        d|› dt        t        «      › �«      ‚|r0|j
                  j                  d	«      }	||   j                  d|	«       dD ]   }||j
                  v sŒt        |› d|› �«      ‚ �Œ3t        |j                  «      dkD  s�ŒMt        d|j                  › �«      ‚ |j                  «       D ��
ci c]  \  }}
|
r||
d   “Œ c}
}S c c}w c c}
}w )ztA helper for {skip,xfail}_xp_backends.

    Return dict of {backend to skip/xfail: top reason to skip/xfail it}
    Ú_xp_backends>   r„   Únp_onlyÚcpu_onlyÚ
eager_onlyÚ
exceptionszInvalid kwargs: rŠ   zUnknown backend(s): z; must be a subset of r‡   Fr„   z"do not run with non-NumPy backendsre   rˆ   zTno array-agnostic implementation or delegation available for this backend and devicer‰   z*eager checks not executed on lazy backendsr5   r   zUnknown backend: z; must be one of z#do not run with array API backend: )rˆ   r‡   r‰   rŠ   z is mutually exclusive with r4   Nz,Please specify only one backend per marker: )Úlistr€   Úiter_markersÚxp_known_backendsÚsetÚkwargsÚ	TypeErrorr;   r<   ÚitemsÚappendÚxp_skip_cpu_only_backendsÚxp_skip_eager_only_backendsÚlenrC   ÚinsertÚ
isinstanceÚboolÚtype)r\   Úskip_or_xfailr   ÚbackendÚreasonsÚmarkerÚinvalid_kwargsrŠ   Úinvalid_exceptionsr„   Úbackend_reasonsÚkwargÚ	conditions                r(   Ú_backends_kwargs_from_requestr£   h  s  € ô
 �7—<‘<×,Ñ,°¨¸lÐ-KÓLÓM€GÜ*;Ö<˜wˆw˜‰{Ð<€GÐ<àó FˆÜ˜VŸ]™]Ó+ò /Iñ IˆáÜÐ.¨~Ð.>Ð?Ó@Ð@ä˜Ÿ™×*Ñ*¨<¸Ó<Ó=ˆ
Ø'Ô*;Ñ;ÐÜ"& zÔ4EÑ'EÓ"FÐFÐÐFÜÐ3Ð4FÐ3Gð H4Ü48Ô9JÓ4KÐ3LðNó Oð Oð �=‰=×Ñ˜Y¨Ô.Ø—]‘]×&Ñ& xÓ0ÒXÐ4XˆFØ,3¯M©M«Oò 3Ñ(�˜Ø˜gÓ%¨'¸Ò*CØ#×*Ñ*¨6Õ2ñ3ð �]‰]×Ñ˜z¨5Ô1Ø—]‘]×&Ñ& xÓ0ò /ð.ð ô 5°zÑAò 0�Ø˜Ñ ×'Ñ'¨Õ/ñ0ð �]‰]×Ñ˜|¨UÔ3Ø—]‘]×&Ñ& xÓ0ò >Ø<ð ä6¸ÑCò 0�Ø˜Ñ ×'Ñ'¨Õ/ð0ô ˆv�{‰{Ó˜qÒ Ø—k‘k !‘nˆGØÔ/Ñ/Ü Ð#4°W°Ið >3Ü37Ô8IÓ3JÐ2Kð"Mó Nð Nà—]‘]×&Ñ& xÓ0ò AØ5°g°YÐ?ð ð �GÑ×#Ñ# A vÔ.àLò V�Ø˜FŸM™MÒ)Ü$¨ wÐ.JÈ7È)Ð%TÓUÐUòVô �—‘Ó Ò"¤z°&·+±+¸a±.Ä$ÌÈdËÑBSÔ'Tð "(§¡ÑˆG�YàÔ/Ñ/Ü Ð#4°W°Ið >3Ü37Ô8IÓ3JÐ2Kð"Mó Nð Nñ ØŸ™×*Ñ*¨8Ó4�ð ˜Ñ ×'Ñ'¨¨6Ô2àLò V�Ø˜FŸM™MÒ)Ü$¨ wÐ.JÈ7È)Ð%TÓUÐUòVô �—‘Ó Ô!ÜØ>¸v¿{¹{¸mÐLóð ðIFðR -4¯M©M«O÷ Ù(�˜Ùð �_ QÑ'Ñ'ó  ð  ùòU =ùóT s   °
OÎ7Or\   rš   )r>   rB   Úreturnc                 óÐ   — |› d�| j                   vryt        | |¬«      }| j                  }|j                  |v r-||j                     }|sJ ‚t	        t
        |«      } ||¬«       yy)aü  
    Helper of the `xp` fixture.
    Skip or xfail based on the ``skip_xp_backends`` or ``xfail_xp_backends`` markers.

    See the "Support for the array API standard" docs page for usage examples.

    Usage
    -----
    ::
        skip_xp_backends = pytest.mark.skip_xp_backends
        xfail_xp_backends = pytest.mark.xfail_xp_backends
        ...

        @skip_xp_backends(backend, *, reason=None)
        @skip_xp_backends(backend, condition, /, *, reason='skip because condition')
        @skip_xp_backends(*, cpu_only=True, exceptions=(), reason=None)
        @skip_xp_backends(*, eager_only=True, exceptions=(), reason=None)
        @skip_xp_backends(*, np_only=True, exceptions=(), reason=None)

        @xfail_xp_backends(backend, *, reason=None)
        @xfail_xp_backends(backend, condition, /, *, reason='xfail because condition')
        @xfail_xp_backends(*, cpu_only=True, exceptions=(), reason=None)
        @xfail_xp_backends(*, eager_only=True, exceptions=(), reason=None)
        @xfail_xp_backends(*, np_only=True, exceptions=(), reason=None)

    Parameters
    ----------
    backend : str, optional
        Backend to skip/xfail, e.g. ``"torch"``.
        Mutually exclusive with ``cpu_only``, ``eager_only``, and ``np_only``.
    cpu_only : bool, optional
        When ``True``, the test is skipped/xfailed on non-CPU devices,
        minus exceptions. Mutually exclusive with ``backend``.
    eager_only : bool, optional
        When ``True``, the test is skipped/xfailed for lazy backends, e.g. those
        with major caveats when invoking ``__array__``, ``__bool__``, ``__float__``,
        or ``__complex__``, minus exceptions. Mutually exclusive with ``backend``.
    np_only : bool, optional
        When ``True``, the test is skipped/xfailed for all backends other
        than the default NumPy backend and the exceptions.
        Mutually exclusive with ``backend``. Implies ``cpu_only`` and ``eager_only``.
    reason : str, optional
        A reason for the skip/xfail. If omitted, a default reason is used.
    exceptions : list[str], optional
        A list of exceptions for use with ``cpu_only``, ``eager_only``, or ``np_only``.
        This should be provided when delegation is implemented for some,
        but not all, non-CPU/non-NumPy backends.
    r†   N)rš   rƒ   )Úkeywordsr£   r�   Ú__name__Úgetattrr=   )r\   rš   Úskip_xfail_reasonsr~   r„   s        r(   r   r   ½  ss   € ðd ˆ˜Ð%¨W×-=Ñ-=Ñ=Øä6Ø˜}ôÐð 
�‰€BØ	‡{�{Ð(Ñ(Ø# B§K¡KÑ0ˆÙˆˆvÜ¤¨Ó6ˆÙ˜VÖ$ð	 )rb   c                 ó\  — t        | «      rt        j                  d¬«       t        | «      rddgS t	        | «      rt        j                  d¬«       t        | «      r'| j                  «       j                  «       }d„ |D «       S t        | j                  «       j                  «       «      dz   S )ao  Fixture that returns a list of all devices for the backend, plus None.
    Used to test input->output device propagation.

    Usage
    -----
    from scipy._lib._array_api import xp_device

    def test_device(xp, devices):
        for d in devices:
            x = xp.asarray(..., device=d)
            y = f(x)
            assert xp_device(y) == xp_device(x)
    zdata-apis/array-api-compat#293rƒ   rm   Nzjax-ml/jax#26000c              3   ó@   K  — | ]  }|j                   d k7  sŒ|–— Œ y­w)ÚmetaN)r™   )Ú.0Údevices     r(   ú	<genexpr>zdevices.<locals>.<genexpr>  s   è ø€ ÒF˜6°·±¸vÓ0E”ÑFùs   ‚—©N)	r
   r=   rB   r   r   r   Ú__array_namespace_info__ÚdevicesÚtuple)r~   r²   s     r(   r²   r²   ý  sŒ   € ô ˆr„{ô 	�‰Ð<Õ=Üˆr„{à�tˆ}ÐÜˆb„zô 	�‰Ð.Õ/Ü�„|Ø×-Ñ-Ó/×7Ñ7Ó9ˆáF WÔFÐFÜ�×,Ñ,Ó.×6Ñ6Ó8Ó9¸GÑCÐCrb   z.hypothesisÚnondeterministic)r!   ÚdeadlineÚ
print_blobÚdeterministic)r!   rµ   r¶   ÚdatabaseÚderandomizeÚsuppress_health_checkÚSCIPY_HYPOTHESIS_PROFILEc              #   ó°  K  — t        «       }ddg}|D ]  }t        t        d¬«      ||<   Œ g }|D ]  }t        t        ¬«      ||<   Œ ddlm} dd	g}|D ]  }t        |j
                  d
¬«      ||<   Œ g d¢}|D ]  }t        t        ¬«      ||<   Œ t        t        d¬«      t        dt        ¬«      t        d|j
                  ¬«      dœ}|j                  |«       t        d«      }	ddl
m}
 ddl} |
«       5  |j                  j                  d«       t        j                   «       5  | r5| j"                  |v r't        j$                  di || j"                     ¤Ž d–— nN| r| j"                  |	v rd–— n9t        j&                  dt(        «       t        j$                  ddt        «       d–— ddd«       ddd«       y# 1 sw Y   ŒxY w# 1 sw Y   yxY w­w)zmTemporarily turn (almost) all warnings to errors.

        Filter out known warnings which we allow.
        zscipy.linalg.normzscipy.ndimage.center_of_masszdivide by zero)rY   Úmessagerr   r   )Ú	integratezscipy.special.ellip_normalzscipy.special.ellip_harm_2zThe occurrence of roundoff)zscipy.stats.anderson_ksampzscipy.stats.kurtosistestzscipy.stats.normaltestúscipy.sparse.linalg.normzExited at iterationzthe matrix subclass is not)r½   rY   z"The maximum number of subdivisions)r¿   z
linalg.rstz	stats.rstúscipy.signal.normalize)Ú_fixed_default_rngNr0   Úerrorz.*odr.*)r0   )ÚdictÚRuntimeWarningÚDeprecationWarningÚscipyr¾   ÚIntegrationWarningÚUserWarningÚPendingDeprecationWarningÚupdaterŽ   Úscipy._lib._utilrÁ   re   ÚrandomÚseedrD   rE   r!   ÚfilterwarningsrF   ÚWarning)ÚtestÚknown_warningsÚdivide_by_zeror!   Ú
deprecatedr¾   Úintegration_wÚuser_wÚdctÚlegitrÁ   r?   s               r(   Úwarnings_errors_and_rngrØ   E  så  è ø€ ô ›ˆð  Ð!?ð
ˆð #ò 	BˆDÜ#'´Ø0@ô$BˆN˜4Ò ð	Bð
 ˆ
Øò 	EˆDÜ#'Ô1CÔ#DˆN˜4Ò ð	Eõ 	$à5Ø5ð
ˆð "ò 	NˆDÜ#'°×1MÑ1MØ0Lô$NˆN˜4Ò ð	Nò
Hˆàò 	>ˆDÜ#'´Ô#=ˆN˜4Ò ð	>ô œkÐ3HÔIô Ð9Ü7ô9ô ÐAØ'×:Ñ:ô<ñ

ˆð 	×Ñ˜cÔ"ô Ð,Ó-ˆõ 	8ÛÙÓ!ñ 	Ø�I‰I�N‰N˜4Ô Ü×(Ñ(Ó*ñ 	Ù˜DŸI™I¨Ñ7Ü×+Ñ+ÑR¸ÀtÇyÁyÑ8QÒRÜÙ˜dŸi™i¨5Ñ0Üä×)Ñ)¨'´7Ô;Ü×+Ñ+¨H°iÔASÔTÛ÷	÷	ð 	÷	ð 	ú÷	ð 	üs7   ‚C5GÃ70G
Ä'BF>Æ-G
Æ5	GÆ>G	ÇG
Ç
GÇG)zscipy.linalg.LinAlgErrorzscipy.fftpack.fftshiftzscipy.fftpack.ifftshiftzscipy.fftpack.fftfreqzscipy.special.sinczscipy.optimize.show_optionsrÀ   r¿   z$scipy.io.matlab.MatlabObject.stridesz"scipy.io.matlab.MatlabObject.dtypez"scipy.io.matlab.MatlabOpaque.dtypez$scipy.io.matlab.MatlabOpaque.stridesz&scipy.io.matlab.MatlabFunction.stridesz$scipy.io.matlab.MatlabFunction.dtypezscipy.interpolate.lagrangez/scipy.interpolate.approximate_taylor_polynomialzscipy.interpolate.padezscipy.spatial.tsearchz"scipy.spatial.minkowski_distance_pz scipy.spatial.minkowski_distancezscipy.spatial.distance_matrix)zscipy.stats.distributionszscipy.optimize.cython_optimizez
scipy.testzscipy.show_configzscipy/special/_precomputez#scipy/interpolate/_interpnd_info.pyz'scipy/interpolate/_rbfinterp_pythran.pyzscipy/_build_utils/tempita.pyzscipy/_externalzscipy/_lib/array_api_compatzscipy/_lib/highszscipy/_lib/unuranzscipy/_lib/_gcutils.pyzscipy/_lib/doccer.pyzscipy/_lib/_uarrayz+scipy/linalg/_cython_signature_generator.pyzscipy/linalg/_generate_pyx.pyzscipy/linalg/_linalg_pythran.pyz$scipy/linalg/_matfuncs_sqrtm_triu.pyz1scipy/ndimage/utils/generate_label_testvectors.pyz scipy/optimize/_group_columns.pyz$scipy/optimize/_max_len_seq_inner.pyz"scipy/signal/_max_len_seq_inner.pyz%scipy/sparse/_generate_sparsetools.pyzscipy/special/_generate_pyx.pyzscipy/stats/_stats_pythran.pyzReST parser limitationz__cinit__ unexpected argumentznan in scalar_powerzintegration warning)zND_regular_grid.rstzextrapolation_examples.rstzsampling_pinv.rstzsampling_srou.rstzprobability_distributions.rstzintegrate.nquad(func,zio.rst)zoctave_a.matzoctave_cells.matzoctave_struct.matz.text(r°   )uÚjsonr%   r    r"   rD   ÚtempfileÚ
contextlibr   Útypingr   re   r?   r=   Ú
hypothesisÚhypothesis_availableÚImportErrorÚscipy._lib._fpumoder   Úscipy._lib._array_apir   r   r   r	   r
   r   r   r   Úscipy._lib._testutilsr   Ú'scipy._external.array_api_extra.testingr   Ú!scipy._external.packaging_versionr   Úscipy_doctest.conftestr   Ú
HAVE_SCPDTÚModuleNotFoundErrorÚpytest_run_parallelr   r   r)   rT   Úfixturer_   rc   r�   r�   rN   Úarray_api_backendsÚxp_available_backendsrŽ   r“   r”   rg   r’   ÚparseÚ__version__ÚVersionÚset_array_api_strict_flagsrf   Úset_default_deviceÚaddrJ   rp   Úset_default_dtypero   r<   rd   rÎ   ÚFutureWarningÚcupyx.scipyrs   Ú	jax.numpyÚjaxÚthread_unsafer'   rÊ   r²   Ú
dask.arrayÚarrayÚdarj   Úxp_available_backend_idsr—   ÚstrÚlowerÚloadsÚSCIPY_ARRAY_API_Úmsgr~   ÚskipifÚskip_xp_invalid_argr£   ÚFixtureRequestr   ÚconfigurationÚset_hypothesis_home_dirÚpathÚjoinÚ
gettempdirÚsettingsÚregister_profiler‹   ÚHealthCheckr:   r;   r»   Úload_profilerØ   Úuser_context_mgrÚskiplistÚpytest_extra_ignoreÚpytest_extra_xfailÚ
pseudocodeÚlocal_resourcesÚstrict_checkÚ	stopwords)Úpr�   s   00r(   ú<module>r     s  ðã Û Û 	Û 
Û Û Ý %Ý ã Û ð!ÛØÐõ -÷÷ ó õ 7Ý KÝ 5ðÝ0Ø€Jð#ÛØ!Ðò
?CòD.ðb €‡��j¨$Ô/ñCó 0ðCñ Ø‡^�^ñó ðò
#Ð ð €F‡L�L�˜ v§{¡{×'EÑ'EÔFðÐ ñ  ›EÐ Ù!›eÐ âðÛØ×$Ñ$ØˆF�L‰LÐ)Ð.@Ø%Ÿ{™{×=Ñ=ô?ô	@ð ˆ7�=‰=Ð)×5Ñ5Ó6¸¸¿¹ÈÓ9OÒOÙÐGÓHÐHØ3Ð×3Ñ3Ø!õ	
ðÛØ×$Ñ$ØˆF�L‰L˜ 7Ø—+‘+×0Ñ0ô2ô	3ð 	!ˆ× Ñ  Ô.Ø˜5Ò Ø%×)Ñ)¨'Ô2ð �"—)‘)Ð1¸9ÔEˆØ�iÒØ#ˆE×#Ñ# E§M¡MÕ2Ø˜	Ò!Ùð%Ø%, I¨Zð9óð ðÛð 	×$Ñ$ØˆF�L‰L˜ &Ø—+‘+×0Ñ0ô2ô	3ð 	"×%Ñ% fÔ-ð 	 ˆ×ÑØÐ;Àmõ	
õ 	'ØðÛà×$Ñ$ØˆF�L‰L˜Ÿ™ {Ø—;‘;×1Ñ1à—;‘;×,Ñ,ð.ô/ô	0ð 	�
‰
×ÑÐ*¨DÔ1ð 	�
‰
×ÑÐ8¸)ÔDØ�
‰
×ÑÐ.°°·±¸LÓ0IÈ!Ñ0LÔMØ˜5Ò Ø%×)Ñ)¨+Ô6ð 	$×'Ñ'¨Ô4ðÝà×$Ñ$ØˆF�L‰L˜ Ø—;‘;×1Ñ1à—;‘;×,Ñ,ð.ô/ô	0ð 	$×'Ñ'¨Ô5ð /DÖD¨ §£ÒDÐØ'Ð*;Ò;Ð;Ð;ñ 	�? CÔ(Ø!ˆO×!Ñ!Ó#Ð+?Ñ?á˜z˜tŸz™z¨/Ó:Ó;ÐØ ˜wÒ&ØÐ":Ò:Ø:Ø2Ð3°6Ð:JÐ9KðM�á  “oÐ%ð $9ö%ØØ—8‘8Ð/Ñ/ò ò%Ð!ð €‡�Ð,Ô-ñ/ó .ð/ðd —k‘k×(Ñ(¨ðIð )ó KÐ ò
R ðj=% v×'<Ñ'<ð =%Ø-4°_Ñ-Eð=%ØJNó=%ð@ ‡�ñ"Dó ð"DñJ ð ×Ñ×4Ñ4Ø
�‰�‰Ð(�X×(Ñ(Ó*¨MÓ:ôð ×Ñ×(Ñ(Ø¨$¸4ð )ô ð ×Ñ×(Ñ(ØØ $°À4Ù" :×#9Ñ#9Ó:ð )ô ð  "Ÿz™zŸ~™~Ð.HØ.=ó ?Ðà×Ñ×$Ñ$Ð%=Ô>ñ ð òIó ðIðV "9€IÔÙò ó €IÔò:%€IÔ!ð@  8Ø&>Ø<Ø2Ø)>ñ$€IÔ ñ Ð 7Ð8Ó9€IÔàò 
ð!€IÔð "€IÔð ×Ñ×Ñ˜HÕ%ðC øðe ò !Ø Óð!ûð ò ØƒJðûð ò #Ø"Óð#ûðB ò Úðûð* ò Úðûð$ ò Úðûð. ò Úðûð( ò Úðüò  Eùò%s    ®X Á!X Á*X Ã$BX+ Å+B+X7 ÈA)Y ÊC*Y Í,A%Y ÏY'ÑY,ØXØXØXØXØX(Ø'X(Ø+X4Ø3X4Ø7Y Ø?Y ÙYÙYÙYÙYÙY$Ù#Y$