o
    `^hˊ                     @   s  d dl Z d dlZd dlmZ d dlmZmZ d dlm	  m
Z d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ dd	 Zd
d ZdZdZe jjdede jjdedee jdG dd dZe jjdede jjdedee jdG dd dZdS )    N)_ELIMITS)bracket_rootbracket_minimum)stats)xp_assert_closexp_assert_equalxp_assert_lessarray_namespace)xp_ravel)array_api_compatiblec                  O   s6   t | i |}|j\|_|_|j\|_|_|`|`|S N)r   bracketxlxr	f_bracketflfrargskwargsres r   _/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_bracket.py_bracket_root   s   r   c                  O   s>   t | i |}|j\|_|_|_|j\|_|_|_|`|`|S r   )	r   r   r   xmr   r   r   fmr   r   r   r   r   _bracket_minimum#   s   r   z5Array API does not support fancy indexing assignment.z*JAX arrays do not support item assignment.array_api_strict)reasonz	jax.numpyskip_xp_backendsc                	   @   s6  e Zd Zejddejddejddejdddd Zd	d
 Zejdde	dddgejdddgejdddgejdddgdd Z
ejde dddgdd Zd d! Zejd"d#d#d$gfejdddgejdddgejd%d&d'd( Zd)d* Zd+d, ZdS )-TestBracketRootseed)i&$l   v ih0use_xminFT
other_sidefix_one_sidec                    s  t j|}||jddg d \}}}	d|	 }	|| }
 fdd |rb||  }||||  | ||	 }||| |	|    ||| |	|d     }}t||
|	|d}n)|||
| ||	 }|
||	|   |
||	|d    }}t||
|	d}|r|d	  |d
  |d
< |d	< | | }}d|v r|d |d< |r|r|
 |d< n|
|d< d _t	 fi |}|s|j
d|jd    krd jd    krd|d  ksJ  J n%|j
|jd d   kr jd d   kr|d d ksJ  J ||j|jg}t||||g ||j|jg}t| | |j|jks>J ||}|d |d  ksOJ |jdksWJ |js]J d S )N   size)     j@
         c                         j d7  _ | S Nr,   countxfr   r   r4   G      z-TestBracketRoot.test_nfev_expected.<locals>.f)xl0xr0factorxmin)r6   r7   r8   r7   r6   r9   xmaxr      )nprandomdefault_rngasarrayceillogdictpopr0   r   nfevnitr   r   r   r   r   signstatussuccess)selfr!   r"   r$   r%   xprngr6   dr8   r7   r9   nlur   r   r   r   signsr   r3   r   test_nfev_expected4   sH    $2&FJ
z"TestBracketRoot.test_nfev_expectedc                 C   s   t j || S r   )r   	_stats_py_SimpleNormalcdf)rI   qpr   r   r   r4         zTestBracketRoot.frV   333333?皙?gffffff?r*   r9   Nr:   r+   r8   333333?r;   c              
   C   sF   t | j|dd|||||fd}t||j ||j d S )N{Gz{Gz?)r9   r:   r8   r   )r   r4   r?   r   rF   r   r   )rI   rV   r9   r:   r8   rJ   r   r   r   r   
test_basic   s    zTestBracketRoot.test_basicshape   r&      r&   r;   r;   c              
      sv  |rt ddd|nt d}|f}dt jfdd}fdd	d
_t jd}|j|d }|j|d}d| d| }	}
|r\|j|ddk}t j t j|	|< |
|< |j|dd }||||	|
||	 }
|
|
|	
|

|f\}}}	}
}ttj
|}t|||	|
||d}g d}|D ]#  fdd|D }t| }tt|d| t|j| qt
d}|jj|jksJ |r|jdd sJ |jjjksJ |jjjksJ |jjjksJ |jjd ksJ t|j|j  t|j!
j"|jg|R   t|j#
j"|j g|R   d S )N皙?ra   rX   r*   c              
      s   t j| |||||f dS )Nr9   r:   r8   r   maxiter)r   r4   )r6   r7   r9   r:   r8   rV   rh   rI   r   r   bracket_root_single   s   z?TestBracketRoot.test_vectorization.<locals>.bracket_root_singlec                     s     j d7  _ j| i |S r.   )f_evalsr4   )r   r   )r4   rI   r   r   r4         z-TestBracketRoot.test_vectorization.<locals>.fr   # r'        @@      ?      ?rg   )r   r   r   r   rH   rD   rE   c                       g | ]
} t| qS r   r?   getattr.0refattrrJ   r   r   
<listcomp>       z6TestBracketRoot.test_vectorization.<locals>.<listcomp>rJ         ?r,   r;   )$r<   linspacereshapefloat64	vectorizerk   r=   r>   infravelr?   tuplemapr   rs   r   r
   stackr   r_   r	   rH   dtypeboolallrG   int32rD   rE   maxr   r   r   r   r4   r   )rI   r_   rJ   rV   r   rj   rK   r6   r7   r9   r:   ir8   refsr   attrsref_attrres_attrxp_testr   )rx   r4   rh   rI   rJ   r   test_vectorization   sR   "
"&z"TestBracketRoot.test_vectorizationc                    s    fdd} j d jdf}t| g d g d  j d j  j dg  jd	 j jd
g|dd} jtjttjtj	tj
g jd}t|j| d S )Nc                    >   dd dd dd fdddd g  fddt | |D S )	Nc                 S      | d S )Nrp   r   r1   r   r   r   <lambda>       z7TestBracketRoot.test_flags.<locals>.f.<locals>.<lambda>c                 S   r   Ni  r   r1   r   r   r   r      r   c                 S   r   r   r   r1   r   r   r   r      r   c                    s
   |  j  S r   nanr1   r{   r   r   r      s   
 c                 S      | S r   r   r1   r   r   r   r          c                    s    g | ]\}} t | |qS r   )intru   r2   jfuncsr   r   ry      s     z9TestBracketRoot.test_flags.<locals>.f.<locals>.<listcomp>zipxsjsr{   r   r   r4         
z%TestBracketRoot.test_flags.<locals>.fr+   r   )      r   r   r         @)r,   r,   r,   r,   r}      r,   r;   r&   )r6   r7   r9   r:   r   rh   )arangeint64r   r?   r   eim_ECONVERGEDr   	_ECONVERR
_EVALUEERR
_EINPUTERRr   r   rG   )rI   rJ   r4   r   r   	ref_flagsr   r{   r   
test_flags   s$   	zTestBracketRoot.test_flagsroot灕Cl?V-?r   float16float32r   c           	         s   t |  t|d|d u r|n|j| d}|d u r|n|j| d}|j| d} fdd}|jddg d}t|g|R |||fd}||jsSJ |jj|jj  krb kseJ  J |j	j|j
j  krt kswJ  J d S )Nr|   r   c                        | | d  S )Nr&   astype)r2   r   r   r   r   r   r4      rW   z%TestBracketRoot.test_dtype.<locals>.fr\   r]   )r9   r:   r   )rs   r	   r?   r   r   rH   r   r   r   r   r   )	rI   r   r9   r:   r   rJ   r4   r   r   r   r   r   
test_dtype   s   
$(zTestBracketRoot.test_dtypec                 C   s  d}t jt|d td dd W d    n1 sw   Y  d}t jt|d tdd dd W d    n1 s;w   Y  t jt|d td	d dd
 W d    n1 sZw   Y  t jt|d tdd ddtd W d    n1 s{w   Y  t jt|d tdd ddt d W d    n1 sw   Y  t jt|d tdd ddtd W d    n1 sw   Y  d}t jt|d tdd dddd W d    n1 sw   Y  d}t jt|d tdd |ddg|g d W d    n	1 sw   Y  d}t jt|d tdd dddd W d    n	1 s1w   Y  t jt|d tdd dddd W d    n	1 sSw   Y  t jt|d tdd ddd d W d    d S 1 svw   Y  d S )!N`func` must be callable.matchr   rc   ...must be numeric and real.c                 S   r   r   r   r1   r   r   r   r      r   z7TestBracketRoot.test_input_validation.<locals>.<lambda>y            ?c                 S   r   r   r   r1   r   r   r   r     r   helloc                 S   r   r   r   r1   r   r   r   r     r   r9   c                 S   r   r   r   r1   r   r   r   r     r   r:   c                 S   r   r   r   r1   r   r   r   r     r   r8   0All elements of `factor` must be greater than 1.c                 S   r   r   r   r1   r   r   r   r     r   ro   	broadcastc                 S   r   r   r   r1   r   r   r   r     r   )r&   rc   r+   )`maxiter` must be a non-negative integer.c                 S   r   r   r   r1   r   r   r   r     r   rp   )rh   c                 S   r   r   r   r1   r   r   r   r     r   r}   c                 S   r   r   r   r1   r   r   r   r     r   	shrubbery)	pytestraises
ValueErrorr   r<   objectsum	Exceptionr?   rI   rJ   messager   r   r   test_input_validation   sL   &$z%TestBracketRoot.test_input_validationc                    s  t |dfdd t |d|d}|jsJ dd  |d|df}t g|R dd	i}|jsAJ |j|k|jd	ksHJ |jd
ksOJ |jdksVJ dd  t |d|d|dd}|jspJ t	|j
 |jd  fdd d	 _t |d|d  jd
ksJ d	 _t |d|dd
d}|jdksJ t	|j|ddd t	|j|ddd tjdd t |d|dd	d}W d    n1 sw   Y  t	|j|ddd tjdd t |d|dd	d}W d    n	1 sw   Y  t	|j|ddd tjdd t |d|dd d}W d    n	1 sCw   Y  |jrNJ d S )!Nr|   c                         | jds	J | d d S )Nzreal floatingc   r,   isdtyper   r1   r   r   r   r4   #     z-TestBracketRoot.test_special_cases.<locals>.f      g      @c                 S   r   )Nr*   r   r1   r   r   r   r4   +  s         rh   r   r;   r   c                 S   s   ||  d S r.   r   r2   cr   r   r   r4   6     r         @r   r&   c                    r-   r.   r/   r1   r3   r   r   r4   @  r5   i   g      $@r   rc           gV瞯<)atolignore)overr   g      $g      r   r,   )r	   r?   r   rH   r   r   rE   rD   rG   r   r   r0   r<   errstate)rI   rJ   r   r   r   )r4   r   r   test_special_cases  s\   

z"TestBracketRoot.test_special_cases)__name__
__module____qualname__r   markparametrizerQ   r4   r<   r~   r^   r   r   r   r   r   r   r   r   r   r   r    /   s,    I
5'r    c                   @   s  e Zd Zdd Zdd ZdddddddddZejd	d
ejddejdddd Z	dd Z
ejddddgfejddejdddgejdddgdd Zejjdddd d! Zejd"d#dgejd$d%ejd&d'ejd(d)d*d+ Zejd,d-ejd(d.d/d0 Zejd1d2ejd(d3d4d5 Zejd6d7d8d9 Zejd:e d;d<d=gd>d? Zd@dA ZdBdC ZdDdE ZdS )FTestBracketMinimumc                    s    fdd d _  S )Nc                    s     j d7  _ | | d | S )Nr,   r;   r/   )r2   abr3   r   r   r4   j  rl   z$TestBracketMinimum.init_f.<locals>.fr   r/   )rI   r   r3   r   init_fi  s   zTestBracketMinimum.init_fc                 C   s`   | |j|jk |j|jk @ sJ | |j|jk|j|jk@ |j|jk|j|jk@ B s.J d S r   )r   r   r   r   r   r   r   )rI   resultrJ   r   r   r   assert_valid_bracketp  s   z'TestBracketMinimum.assert_valid_bracketN)r6   r7   r8   r9   r:   r   c             	   C   s$   d}dd t |||||||fD S )Nr6   r7   r9   r:   r8   r   c                 S   s   i | ]\}}|d ur||qS r   r   )ru   namevalr   r   r   
<dictcomp>}  s
    z1TestBracketMinimum.get_kwargs.<locals>.<dictcomp>r   )rI   r6   r7   r8   r9   r:   r   namesr   r   r   
get_kwargsy  s   zTestBracketMinimum.get_kwargsr!   )l	   ^0#,N0Lb*& l	   }SES].HMa l	   FDuBP_KU r"   r#   r$   c                 C   s2  t j|}|d|df}||jddg d \}}}	}
|| }||	 }|
d7 }
|r|j|  d |jd}t||||  | ||
 }||| |
|    }||| |
|d     }|dkry||| |
|d     n|}|d |d kr|d7 }||| |
|    ||}}}nUd }t|||| ||
 }|||
|   }|dkr|||
|d    n|}|dkr|||
|d    n|}|d |d kr|d7 }|||
|   ||}}}|  }d }|r| | | }}}d |d ur| nd }}| | | }}}| j	|||||
|d	}t
|||fi |}|j|jd
 ks<J |j|jksEJ |j|ksMJ t|j| t|j| t|j| t|j||g|R   t|j||g|R   t|j||g|R   | || |jdksJ |jsJ d S )Nr   rc   r'   )r)   r*   r*   r+   r,   r+   r   r;   r   r&   r   )r<   r=   r>   r?   r   r   r@   rA   r   r   r   rD   rE   r0   r   r   r   r   r   r   r   r   rG   rH   )rI   r!   r"   r$   rJ   rK   r   r6   d1d2r8   xm0r7   r9   rM   lowermiddleupperr4   r:   r   r   r   r   r   rQ     s`   "(&
"  
z%TestBracketMinimum.test_nfev_expectedc           
   	      s    fdd} j d jdf} g d} g d} g d}  j d j  j d	g}t||||||d
d} jtjttjtj	tj
g jd}	t|j|	 d S )Nc                    r   )	Nc                 S   s   | d d S )Nrp   r;   r   r1   r   r   r   r     s    z:TestBracketMinimum.test_flags.<locals>.f.<locals>.<lambda>c                 S   r   r   r   r1   r   r   r   r     r   c                 S   r   r   r   r1   r   r   r   r     r   c                    s    j S r   r   r1   r{   r   r   r     s    c                 S      | d S Nr;   r   r1   r   r   r   r     r   c                    s   g | ]
\}} | |qS r   r   r   r   r   r   ry     rz   z<TestBracketMinimum.test_flags.<locals>.f.<locals>.<listcomp>r   r   r{   r   r   r4     r   z(TestBracketMinimum.test_flags.<locals>.fr+   r   )r   r   r   r         @)r   r   r   r   r   )r|   r|   r|   r|          @r   g       @r&   )r6   r7   r9   r   rh   )r   r   r?   r   r   r   r   r   r   r   r   r   r   rG   )
rI   rJ   r4   r   r6   r   r7   r9   r   reference_flagsr   r{   r   r     s    	 
zTestBracketMinimum.test_flagsminimumr   r   r   r   r9   rZ   r:   r+   c              	      s$  t |  t|d|d u r|n|j| d}|d u r|n|j| d}|j| d} fdd}g d\}}}	t||j| d|j| d|j|	 d|||fd}
||
js^J |
jj|
jj  krt|
j	j  krt kswJ  J |
j
j|
jj  kr|
jj  kr ksJ  J d S )Nr|   r   c                    r   r  r   )r2   r  r   r   r   r4     rW   z)TestBracketMinimum.test_dtypes.<locals>.f)r\   r   r]   )r6   r7   r9   r:   r   )rs   r	   r?   r   r   rH   r   r   r   r   r   r   r   )rI   r  r9   r:   r   rJ   r4   r6   r   r7   r   r   r   r   test_dtypes  s   
26zTestBracketMinimum.test_dtypesTzstr/object arrays)np_onlyr   c                 C   sn  d}t jt|d td ddd W d    n1 sw   Y  d}t jt|d tdd |d	 W d    n1 s>w   Y  t jt|d td
d |ddd W d    n1 saw   Y  t jt|d tdd |ddd W d    n1 sw   Y  t jt|d tdd |dtd W d    n1 sw   Y  t jt|d tdd |dt d W d    n1 sw   Y  t jt|d tdd |dtd W d    n1 sw   Y  d}t jt|d tdd |ddd W d    n	1 sw   Y  d}t jt|d tdd |ddgg dd W d    n	1 s>w   Y  d}t jt|d tdd |dddd  W d    n	1 sew   Y  t jt|d td!d |ddd"d  W d    n	1 sw   Y  t jt|d td#d |ddd$d  W d    d S 1 sw   Y  d S )%Nr   r   r   rc   )r6   r   c                 S   r  r  r   r1   r   r   r   r     r   z:TestBracketMinimum.test_input_validation.<locals>.<lambda>y      @      ?c                 S   r  r  r   r1   r   r   r   r     r   r   c                 S   r  r  r   r1   r   r   r   r     r   zfarcical aquatic ceremonyr7   c                 S   r  r  r   r1   r   r   r   r     r   r   c                 S   r  r  r   r1   r   r   r   r     r   r   c                 S   r  r  r   r1   r   r   r   r     r   r   r   c                 S   r   r   r   r1   r   r   r   r     r   ro   z+shape mismatch: objects cannot be broadcastc                 S   r  r  r   r1   r   r   r   r   "  r   r   r   )r   r   rZ   r   c                 S   r  r  r   r1   r   r   r   r   &  r   rp   )r7   rh   c                 S   r  r  r   r1   r   r   r   r   (  r   r}   c                 S   r  r  r   r1   r   r   r   r   *  r   ekki)r   r   r   r   r?   r<   r   r   r   r   r   r   r     sV   "$z(TestBracketMinimum.test_input_validationr6   r   r   )rY   皙?g333333?r7   )皙?皙?rX   Nr   ))r[   r   )g      r   )r  r   )r  r   )g@r   )gffffff5@r   )gffffff^@r   )g@r   )gr   )g)r   )gfffffFbr   c           	      C   sz   |   }| j||tt|j|d}t||j||jdfi |}| || |jdks.J |j	s3J |j
|jks;J d S )Nr6   r7   r   r   r   )r   r   r   r   r?   r   r   r   rG   rH   rD   r0   )	rI   r6   r   r7   r   rJ   r4   r   r   r   r   r   test_scalar_no_limits,  s   
z(TestBracketMinimum.test_scalar_no_limitszxl0,xm0,xr0,xmin))ro         ?r|   r   )r|         @r   r   )r  r   r  r   )g      (@      0@      4@r   )Nr  r|   r   )Nr  r   r   )Nr   r  r   )Nr  r  r   ))r   r   )gYnr   )g#B;r   )r  r   )r  r   )r  r   c           
      C   sv   |   }| j|||tt|j|d}t|||fi |}	| |	| |	jdks,J |	js1J |	j	|j
ks9J d S )N)r6   r7   r9   r   r   )r   r   r   r   r?   r   r   rG   rH   rD   r0   )
rI   r6   r   r7   r9   r   rJ   r4   r   r   r   r   r   test_scalar_with_limit_leftB  s   

z.TestBracketMinimum.test_scalar_with_limit_leftzxl0,xm0,xr0,xmax))r  333333?r  r|   )rY   333333?r  r|   )皙ɿ皙r   r|   )3333335333331gffffff,r|   )r  r  Nr|   )rY   r  Nr|   )r  r  Nr|   )r  r  Nr|   ))g?r   )g?r   )gffffff?r   )ro   r   c           
         s   |   }t fdd|D }| j||||d}t| j| jdfi |}	| |	  |	jdks4J |	js9J |	j	|j
ksAJ d S )Nc                 3        | ]} j | jd V  qdS r   Nr?   r   ru   argr{   r   r   	<genexpr>      zBTestBracketMinimum.test_scalar_with_limit_right.<locals>.<genexpr>)r6   r7   r:   r   r   r   )r   r   r   r   r?   r   r   rG   rH   rD   r0   )
rI   r6   r   r7   r:   r   rJ   r4   r   r   r   r{   r   test_scalar_with_limit_righth  s   
z/TestBracketMinimum.test_scalar_with_limit_rightzxl0,xm0,xr0,xmin,xmax,args))r  r  r  Nr|   r|   r   )gffffff?333333?r  r  Nr  r   )g@      
@g333333@N皙X@r(  r   )rc         @r+   L:Nr+  r   )Nr  NNr|   r$  )Nr%  Nr  Nr&  )Nr'  NNr(  r)  )Nr*  Nr+  Nr,  c                 C   sx   |   }| j|||tt|j|d}	t|||fi |	}
|
jdks&J |d |
j|
jfv s2J |
j	|j
ks:J d S )N)r7   r9   r:   r   r}   r   )r   r   r   r   r?   r   rG   r   r   rD   r0   )rI   r6   r   r7   r9   r:   r   rJ   r4   r   r   r   r   r   test_minimum_at_boundary_point  s   ]
z1TestBracketMinimum.test_minimum_at_boundary_pointr_   r`   rb   rd   c                    s\  |rt ddd|nd}|df}dt jfdd} }t jd	}|j|d
 }|j|d
}	||j|d
|	|   }
d| d|	 }}|r`|j|d
dk}t j t j||< ||< |j|d
d }||
||	|||| }t	fdd|D }t
||
||	||||d	}g d}|D ]#  fdd|D }t| }tt|d| t|j| qtd}|jj|jksJ |r׈|jdd sJ |jjjksJ |jjjksJ |jjjksJ |j|jd ksJ | t|j||jg|R   t|j ||j!g|R   t|j"||j#g|R   d S )Nre   rf   ra   rX   r   r*   c                    s"   t  | ||||| |dfd	S )Nr   )r6   r7   r9   r:   r8   rh   r   )r   r   )r   r6   r7   r9   r:   r8   r   ri   r   r   bracket_minimum_single  s   zETestBracketMinimum.test_vectorization.<locals>.bracket_minimum_singlerm   r'   rn   ro   rp   c                 3   r  r  r  r  r{   r   r   r!  
  r"  z8TestBracketMinimum.test_vectorization.<locals>.<genexpr>)r6   r7   r9   r:   r8   r   rh   )	r   r   r   r   r   r   rH   rD   rE   c                    rq   r   rr   rt   rw   r   r   ry     rz   z9TestBracketMinimum.test_vectorization.<locals>.<listcomp>r{   r|   r,   r}   r&   )$r<   r~   r   r   r   r=   r>   r   r   r   r   r?   rs   r   r
   r   r   r_   r	   rH   r   r   r   rG   r   rD   rE   r   r0   r   r   r   r   r   r   r   )rI   r_   rJ   r   r   r.  r4   rK   r6   r7   r   r9   r:   r   r8   r   r   r   r   r   r   r   )rx   rh   rI   rJ   r   r     sL   
z%TestBracketMinimum.test_vectorizationc                    s  t |d  fdd}t||jd|jddd}|jsJ dd }|d	|d
|d}}}t||||dd}t|j| t|j| t|j| dd }t||d
|dd}|jseJ t	|j
||jd |  }|d
|d|d}}}|d|df}t|||||d}|jdksJ t|j| t|j| t|j| t|j
||g|R   t|j||g|R   t|j||g|R   d S )Nr|   c                    r   )Nnumericb   r,   r   r1   r   r   r   r4   (  r   z0TestBracketMinimum.test_special_cases.<locals>.fr   r   r+   r
  c                 S   s   | d d S )Nr;   r*   r   r1   r   r   r   r4   0  r   r   r   r  r   )r6   r7   rh   c                 S   s   || d  d S )Nr;   r,   r   r   r   r   r   r4   :  s   r   r   r&   r  r   r  )r	   r?   r   r   rH   r   r   r   r   r   r   r   r0   r   r   )rI   rJ   r4   r   r6   r   r7   r   r   r   r   r   "  s2   
"
"z%TestBracketMinimum.test_special_casesc                    sN    d d  fdd}t| d d}|jks%J d S )NgJg7e4?g[2\WZ?c                    s(      }}|| |  d  S Nr}   rA   r2   log_alog_br:   r9   rJ   r   r   r4   T  s   z0TestBracketMinimum.test_gh_20562_left.<locals>.fg_\ݶ?r9   r:   )r?   r   r   rI   rJ   r4   r   r   r6  r   test_gh_20562_leftO  s   z%TestBracketMinimum.test_gh_20562_leftc                    sN    d d  fdd}t| d d} |jks%J d S )Ng[2\WZgJg7e4̿c                    s*        }}|| |  d S r1  r2  r3  r6  r   r   r4   a  s   z1TestBracketMinimum.test_gh_20562_right.<locals>.fg_\ݶr7  )r?   r   r   r8  r   r6  r   test_gh_20562_right\  s   z&TestBracketMinimum.test_gh_20562_right)r   r   r   r   r   r   r   r   r   rQ   r   r  r   r   r  r  r#  r-  r   r   r   r9  r:  r   r   r   r   r   d  sl    
	G
'	
	

\	
1-r   ) r   numpyr<   scipy.optimize._bracketr   scipy.optimize.elementwiser   r   (scipy._lib._elementwise_iterative_method_lib_elementwise_iterative_methodr   scipyr   scipy._lib._array_api_no_0dr   r   r   r	   scipy._lib._array_apir
   scipy.conftestr   r   r   array_api_strict_skip_reasonjax_skip_reasonr   r   usefixturesr    r   r   r   r   r   <module>   s2    		
  3
