
    Ui)                        d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlZ	d dl
mZmZmZmZmZmZmZmZ d dlmc mZ ddlmZ e G d d	                      Zd
 Zd Zd Zd Zd Zd Zd Z d Z! edddg          Z" eej#        de"           eej$        de"e           eej%        de           eej&        de           eej'        d           eej(        d           eej)        d           eej*        d           eej+        d           eej,        d           eej-        d           eej.        d           eej/        d           eej0        d           eej1        d           eej2        d           eej3        d           eej4        d           eej5        d           eej6        de           eej7        de"e            eej8        d eddgdg          e!           eej9        de          fZ: e;            <                    d e:D                        d e:D             Z=dS )    N)Callable)	dataclass)
ModuleType)array_namespacescipy_namespace_foris_numpyis_dask	is_marray
xp_promotexp_capabilitiesSCIPY_ARRAY_API   )_ufuncsc                       e Zd ZU eed<   eed<   dZeegef         dz  ed<   dZeeedz  gedz  f         dz  ed<   e	d             Z
d Zd Ze	d	             Z ej        d
          d             ZdS )	_FuncInfofuncn_argsNr   generic_implc                     | j         j        S Nr   __name__selfs    /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/scipy/special/_support_alternative_backends.pynamez_FuncInfo.name#   s    y!!    c                 *    t          | j                  S r   )hashr   r   s    r   __hash__z_FuncInfo.__hash__(   s    DIr   c                 L    t          |t                    o| j        |j        k    S r   )
isinstancer   r   )r   others     r   __eq__z_FuncInfo.__eq__+   s     %++G	UZ0GGr   c                 J     j         t                      v rdd l}t          |j         j                   S t
          r:t          j         j                   fd            }d|_	         j         |_
        |}n j        } j        pt                      } ||          }||u sJ |S )Nr   c                  L    t          |  }                     |          | i |S r   )r   _wrapper_for)argskwargsxpr   s      r   wrappedz"_FuncInfo.wrapper.<locals>.wrapped7   s0    $d+,t((,,d=f===r   zscipy.special)r   globalsscipy.specialgetattrspecialr   	functoolswrapsr   
__module____qualname__r   )r   scipyr+   r   capabilitiescap_funcs   `     r   wrapperz_FuncInfo.wrapper.   s    9		!! !   5=$)444 	_TY''> > > > ('> "1G#'9G DD9D+@/@/@  <%%4r   i  c                    t          |          r| j        S t          |          }t          ||| j                  }||S | j        |                     ||          }||S t          |          r"t                      | j                 }||dd}|S t          |          r"t                      | j                 }||dd}|S | j        }||dd}|S )N)_fr*   c                     d |D             } | |i |}t          j        t          j        d |D                       }|                    ||          S )Nc                     g | ]	}|j         
S  )data.0args     r   
<listcomp>z5_FuncInfo._wrapper_for.<locals>.f.<locals>.<listcomp>e   s    666#SX666r   c              3   $   K   | ]}|j         V  d S r   maskr>   s     r   	<genexpr>z4_FuncInfo._wrapper_for.<locals>.f.<locals>.<genexpr>g   s$      6P6PCsx6P6P6P6P6P6Pr   rC   )r0   reduceoperatoror_asarray)r9   r*   r(   r)   	data_argsoutrD   s          r   fz!_FuncInfo._wrapper_for.<locals>.fd   sb    66666	b).v.. '6P6P46P6P6PQQzz#Dz111r   c                 >     |j         t          j        | fi |g|R  S r   )
map_blocksr0   partial)r9   r*   r(   r)   s       r   rL   z!_FuncInfo._wrapper_for.<locals>.ft   s/    $r}Y%6r%D%DV%D%DLtLLLLr   c                 T    d |D             } | |i |}|                     |          S )Nc                 6    g | ]}t          j        |          S r<   )nprI   r>   s     r   rA   z5_FuncInfo._wrapper_for.<locals>.f.<locals>.<listcomp>   s     444BJsOO444r   )rI   )r9   r*   r(   r)   rK   s        r   rL   z!_FuncInfo._wrapper_for.<locals>.f|   s;     54t444D"d%f%%C::c??"r   )	r   r   r   _get_native_funcr   r   r
   r,   r	   )r   r*   spxrL   r9   s        r   r'   z_FuncInfo._wrapper_forK   s+   B<< 	9 ""%%Rdi00=H (!!"c**A}R== 	 49%B2 2 2 2 2 2 H2;; 	 49%B2 M M M M M H Yr 	# 	# 	# 	# 	# r   )r   r2   r3   r   __annotations__intr   r   r   propertyr   r    r$   r7   r0   	lru_cacher'   r<   r   r   r   r      s         NNN KKK >BOXxj(23d:AAA  (	Z$&'D8    " " X"  H H H   X8 Y7 7 7 7 7r   r   c                     |rt          |j        |d           nd }|&t          | d          rt          | j        |d           }|S )Nr/   )r.   r/   hasattr)r*   rT   f_namerL   s       r   rS   rS      sL    .1;VT***tAyWR++y BJ--Hr   c                     | dd}|S )Nr*   c                z   t          |          rt          | j        |j                  n|t          | |dd|          \  } }| dk    |dk    z  }|                    |           |                    |          z  }t          j        || z  | |ffd|j                  }t          j        |          | dk    |dk    z           	                    d          }t          j        |          |
                    |           |
                    |          z  ||z  z           	                    |j                  }|S )NT)	broadcastforce_floatingr*   r   c                 `    |                      |                                |          z
  z  S r   )log)xymxps     r   <lambda>z/_rel_entr.<locals>.__rel_entr.<locals>.<lambda>   s%    cggajj3771::56 r   )
fill_value)r	   r   _metar   isinfxpxapply_whereinfatsetisnannan)rc   rd   r*   xy_posxy_infresre   s         @r   
__rel_entrz_rel_entr.<locals>.__rel_entr   s"   3:2;;Foagqw///B!Q$tKKK1a%AE"!rxx{{*ofWF6666v
 
 
 fSkk16a1f-.22155fSkk"((1++3vGHLLRVTT
r   r<   )r*   rT   rt   s      r   	_rel_entrru      s&    !     " r   c                     | dd}|S )Nr]   c                    t          | |d|          \  } }t          j        dd          5  | |                    |          z  }d d d            n# 1 swxY w Y   |                    | dk    d|          S )NT)r`   r*   ignore)divideinvalidg        )r   rR   errstaterb   where)rc   rd   r*   temps       r   __xlogyz_xlogy.<locals>.__xlogy   s    !Qt;;;1[(;;; 	! 	!rvvayy=D	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!xxRT***s   AAAr<   )r*   rT   r~   s      r   _xlogyr      s%     + + + + +
 Nr   c                 @     t           |d          d S  fd}|S )Ngammaincc                      | dz  |dz            }| dk    |dk    z  }                     |d|          }                    |                               |          z  }                     |j        |          S )N   r   g      ?)r|   ri   rp   )vrc   rs   rD   r   r*   s       r   __chdtrz_chdtr.<locals>.__chdtr   sy    hq1ua!e$$Q1q5!hhtR%%xx{{RXXa[[(xxbfc***r   rS   )r*   rT   r   r   s   `  @r   _chdtrr      sG    
  C44Ht+ + + + + + Nr   c                 @     t           |d          d S  fd}|S )N	gammainccc                                         |dk     | dz  |dz            d          }|dk    | dk    z                      |          z                      |           z  | dk    z  }                     |j        |          }|S )Nr   r   r   )r|   ro   rp   )r   rc   rs   i_nanr   r*   s       r   __chdtrcz_chdtrc.<locals>.__chdtrc   s    hhqAvyy1ac22A66q&Q!V$3bhhqkkAQ!VLhhubfc**
r   r   )r*   rT   r   r   s   `  @r   _chdtrcr      sG    
 !S+66It     
 Or   c                 <    t          | |d          d S fd}|S )Nbetaincc                 $     || d|z
            S )Nr   r<   )abrc   r   s      r   
__betainccz_betaincc.<locals>.__betaincc   s    wq!QqS!!!r   r   )r*   rT   r   r   s      @r   	_betainccr      s?    r3	22Gt" " " " " r   c                 @     t           |d          d S  fd}|S )Nr   c                 |    | |dz  | z   z  } | dz  d|          dz  }                     |dk     |d|z
            S )Nr   g      ?r   r   )r|   )dftrc   tailr   r*   s       r   __stdtrz_stdtr.<locals>.__stdtr   sO    !q&2+wrAvsA&&*xxAtQX...r   r   )r*   rT   r   r   s   `  @r   _stdtrr      sD    r3	22Gt/ / / / / /
 Nr   c                 x     t           |d          pt           |          d S ddlmm  fd}|S )Nstdtrr   )bracket_root	find_rootc                     fd} |                     |          | |f          } ||j        | |f          }|j        S )Nc                 "     ||           |z
  S r   r<   )r   r   pr   s      r   funz(_stdtrit.<locals>.__stdtrit.<locals>.fun   s    55Q<<!#33r   )r(   )
zeros_likebracketrc   )	r   r   r   res_bracketres_rootr   r   r   r*   s	        r   	__stdtritz_stdtrit.<locals>.__stdtrit   s]    33333"l3a(8(8AwGGG9S+"5RGDDDzr   )rS   r   scipy.optimize.elementwiser   r   )r*   rT   r   r   r   r   s   `  @@@r   _stdtritr      sx    Rg..A&S//E }tBBBBBBBB        r   T	jax.numpycupy)cpu_only
exceptions   )r   r   )r   zno scipy.optimize support)r   r   skip_backendsc                 2    i | ]}|j         j        |j        S r<   )r   r   r7   r?   nfos     r   
<dictcomp>r   &  s!    KKKS#(#S[KKKr   c                 &    g | ]}|j         j        S r<   r   r   s     r   rA   rA   '  s    
7
7
738
7
7
7r   )>r0   rG   collections.abcr   dataclassesr   typesr   numpyrR   scipy._lib._array_apir   r   r   r	   r
   r   r   r   scipy._lib.array_api_extra_libarray_api_extrarj    r   r   rS   ru   r   r   r   r   r   r   _needs_betaincr   betainccchdtrchdtrcerferfcentrexpiti0i0ei1i1elog_ndtrlogitgammalnr   r   ndtrndtrirel_entrr   stdtritxlogy_special_funcsr,   update__all__r<   r   r   <module>r      s        $ $ $ $ $ $ ! ! ! ! ! !                              ) ( ( ( ( ( ( ( (       r r r r r r r rj    *    &  "  
 
 
  2 !$K;PQQQ Igoq.11Ig>	JJJIgmQV444Ignag666Igk1IglAIglAIgmQIgj!Igk1Igj!Igk1Ig""IgmQIgoq!!Ig""Ig##IglAIgmQIg	:::IgmafEEEIgoqoVH!K LN N N $	% % %
 IgmQV4447B 		  KKNKKK L L L
7
7
7
7
7r   