
    uki                       U d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	  e	j                  e       ej                  Zej                  Zej                  Zej                  Zej                   ej"                  ej$                  ej&                  ej(                  ej*                  ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  ej8                  ej:                  ej<                  hej>                  D  ch c]  }  ej@                  |       jB                    c} z  Z"de#d	<   ejH                  DejJ                  J e"jM                  ejH                         e"jM                  ejJ                         ejN                  ejP                  he"z  Z)de#d
<   d Z*e*ejV                  ejX                  jZ                  <   d!dZ.e.ejV                  ejP                  <   	 	 	 	 d"dZ/e/ejV                  ejN                  <   d#dZ0e"D ]  Z1e0ejV                  e1<    ejd                  jg                  e)       ejd                  jM                  ejN                          ejh                  ej&                        jj                  Z6 ejh                  ej&                        jn                  Z8 ejh                  ej(                        jj                  Z9 ejh                  ej(                        jn                  Z: ed ej@                  e;            Z< ed ej@                  ej&                        d      Z= ed ej@                  ej(                        d      Z> ed ej@                  ej~                        d      Z@ ed ej@                  ej                        d      ZB ed ej@                  ej4                        d      ZC ed ej@                  ej6                        d      ZDd ejV                  e;<   d ZEeEejV                  eF<   d ZGeGejV                  eH<   d ZIeIejV                  eJ<   ejd                  jg                  ej                         d ZLej                  D ]  Z1eLejV                  e1<    ejd                  jg                  ej                         d ZNd ZOej                  jg                  d e"D               d ej                  ejN                  <   eNej                  ejP                  <   eOej                  ejX                  jZ                  <   d ZQd ej                  e;<    eQej                  eF      ej                  eF<    eQej                  eH      ej                  eH<    eQej                  eJ      ej                  eJ<   d ej                  ej                  <   d ej                  ej                  <   d  ej                  ej                  <   yc c} w )$    )annotationsN)config)core)literals)dtypes)traceback_utilz	set[type]numpy_scalar_typesarray_typesc                     t        d      Nznumpy masked arrays are not supported as direct inputs to JAX functions. Use arr.filled() to convert the value to a standard numpy array.
ValueError)argskwargss     S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/abstract_arrays.pymasked_array_errorr   /   s    J	K K    c                    | j                   }t        j                  |       t        | j                  t        j
                  |      d       S N)sharding)dtyper   check_valid_dtypeShapedArrayshapecanonicalize_dtypexr   s     r   "_make_shaped_array_for_numpy_arrayr   7   s7    
''%5!	QWWf77>	NNr   c                    | j                   }t        j                  |       t        | j                  |d | j
                        S )N)r   	weak_type)r   r   r   r   r   r    r   s     r   $_make_shaped_array_for_typed_ndarrayr!   ?   s4     ''%5!	QWWedakk	JJr   c                    t        j                  |       }t        j                  |       t        j                  |       }t        |t        j                  |      d       S r   )npr   r   r   r   r   r   )r   r   r   s      r   #_make_shaped_array_for_numpy_scalarr$   J   sD    
((1+%5!
((1+%	UF55e<t	LLr    )r   T)r   r    c                    t         S N)
_bool_avalvs    r   <lambda>r+   g   s    J r   c                    t         j                  j                  r'| t        k  s	| t        kD  rt        d|  d      t        S | t        k  s	| t        kD  rt        d|  d      t        S )NzPython int z too large to convert to int64z too large to convert to int32)
r   
enable_x64value
_int64_min
_int64_maxOverflowError_int64_aval
_int32_min
_int32_max_int32_aval)r.   s    r   	_int_avalr6   i   se    zUZ/Kw.LMNNzUZ/Kw.LMNNr   c                N    t         j                  j                  rt        S t        S r'   )r   r-   r.   _float64_aval_float32_avalr)   s    r   r+   r+   t   s    ):):)@)@ m r   c                N    t         j                  j                  rt        S t        S r'   )r   r-   r.   _complex128_aval_complex64_avalr)   s    r   r+   r+   w   s    f.?.?.E.E* ? r   c                4    t        d| j                  dd       S )Nr%   T)r    r   )r   r   r   s    r   _aval_for_typed_scalarr?   }   s    	RD4	@@r   c                    t        j                  | j                        }t        j                  t        j                  | |      d      S )NF)r    )r   r   r   r   TypedNdArrayr#   asarrayr   s     r   _canonicalize_ndarray_dtyperC      s4    

#
#AGG
,%			rzz!U3u	EEr   c                    t        d      r   r   r>   s    r    _canonicalize_masked_array_dtyperE      s     V 	W Wr   c              #  ,   K   | ]  }|t         f  y wr'   )rC   ).0ts     r   	<genexpr>rI      s      *B)*Q#$*Bs   c                    | S r'   r%   r>   s    r   r+   r+          a r   c                      fd}|S )Nc                >     | t        j                  |             S r'   )r   scalar_type_to_dtype)r   literal_typetyps    r   canonicalize_scalarz8_canonicalize_python_scalar.<locals>.canonicalize_scalar   s    666sA>??r   r%   )rO   rP   rQ   s   `` r   _canonicalize_python_scalarrR      s    @	r   c                    | S r'   r%   r>   s    r   r+   r+      s    Q r   c                    | S r'   r%   r>   s    r   r+   r+      s    ! r   c                    | S r'   r%   r>   s    r   r+   r+      s    A r   c                    | S r'   r%   r>   s    r   r+   r+      rK   r   )r   z
np.ndarrayreturnr   )r   zliterals.TypedNdArrayrW   r   )r   z
np.genericrW   r   )U
__future__r   numpyr#   jax._srcr   r   r   r   r   register_exclusion__file__r   AbstractTokenabstract_tokencanonicalize_shapeint4int8int16int32int64uint4uint8uint16uint32uint64	complex64
complex128bool_longlongintc_float_typesr   typer	   __annotations__int2uint2addrA   ndarrayr
   r   pytype_aval_mappingsmaMaskedArrayr   r!   r$   rH   literalable_typesupdateiinfominr3   maxr4   r/   r0   boolr(   r5   r2   float32r9   float64r8   r<   r;   r6   int_float_avalfloat_complex_avalcomplexpython_scalar_typesr?   typed_scalar_typesrC   rE   canonicalize_value_handlersrR   TypedInt
TypedFloatTypedComplex)dts   0r   <module>r      s:   #      # ! ! !( +""$$,,  KK"((BHHbhh
LL"((BIIryy"))LL"--HHbkk277	!
 "(!4!452XRXXb\5!6 I 6 
;;		!!	!%&"//<?QQY QK
 0B  "%%++ ,O
 )K  "** %KKK 4X  (// 0M 
 EA!D$AE     k *     800 1RXXbhh##
RXXbhh##
RXXbhh##
RXXbhh##
 8288D>2
"HBHHRXX$6$G"HBHHRXX$6$GBhbhhrzz&:dKBhbhhrzz&:dKb(>$Or"--)@DQ "6  $  "+  # S#.  %  Z%2  ' "     f88 9A 
	$	$ 8A!7$A8     h99 :FW  " " ) ) *B.@*B B =H " "8#8#8 91L " "2:: .8X " "255#4#4 5
 ,7 " "4 (*Es+ " "3 ',G-  " "5 ).I7/$ " "7 + 9D " "8#4#4 5:E " "8#6#6 7<G " "8#8#8 9A 6s    #W>