
    Vpf                    X   U d dl mZ d dlmZ d dlZd dlmZmZ d dl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mZ d d
lmZ  e
j        e            ed          ZeZd/dZ ed          ZeZej        d             Zi Z ej!        d             Z"d0dZ#i Z$de%d<   d Z&d1dZ' G d d          Z( ee(d  d!            d2d"Z) ed#          Z*d$e%d%<   e*                    e)           e*!                    d&             G d' d(          Z+eZ,d3d+Z-d4d,Z. ed-          Z/d$e%d.<   dS )5    )annotations)CallableN)AnyTypeVar)core)traceback_util)	Primitivevalid_jaxtyperaise_to_shapedget_aval)register_pytree_node)Array	ArrayLike)safe_mapTxr   yreturnr   c                j    t          j        |           j        }t                              | |          S N)r   r   dtypeadd_jaxvals_pbind)r   r   r   s      P/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/_src/ad_util.pyadd_jaxvalsr   !   s*    
-


 %			Aq	!	!!    add_anyc                H    t          t          |                    | |          S r   )raw_jaxval_adderstyper   r   s     r   add_implr"   (   s    	477	#Aq	)	))r   c                ,    t          j        | |          S r   )r   lattice_joinr!   s     r   add_abstractr%   -   s    		1a	 	  r   avalcore.AbstractValuec                F    t          t          |                    |           S r   )aval_zeros_likersr    r&   s    r   zeros_like_avalr+   1   s    	4::	&t	,	,,r   z"dict[type, Callable[[Any], Array]]r)   c                h    t          t          j        t          j        |                               S r   )r+   r   r   r   vals    r   zeros_like_jaxvalr/   5   s%    	-dmC.@.@AA	B	BBr   zZero | Arrayc                X    t          | t                    rt          | j                  S | S r   )
isinstanceZeror+   r&   r0   s    r   instantiater6   8   s)    4 #16"""	
(r   c                  <    e Zd ZdgZddZddZedd	            Zd
S )r4   r&   r'   c                    || _         d S r   r*   selfr&   s     r   __init__zZero.__init__@       DIIIr   r   strc                    d| j          dS )NzZero()r*   r:   s    r   __repr__zZero.__repr__B   s    49r   r.   r   c                T    t          t          t          |                               S r   )r4   r   r   r-   s    r   
from_valuezZero.from_valueD   s    ..///r   N)r&   r'   r   r=   )r.   r   r   r4   )__name__
__module____qualname__	__slots__r;   rA   staticmethodrC    r   r   r4   r4   >   sa        h)          0 0 0 <0 0 0r   r4   c                    d| j         fS )NrJ   r*   r5   s    r   <lambda>rL   H   s    b!&\ r   c                     t          |           S r   )r4   )r&   _s     r   rL   rL   H   s    4:: r   c                H    t          |           st          d|            | S )NzEstop_gradient only works on valid JAX arrays, but input argument is: )r
   	TypeErrorr   s    r   _stop_gradient_implrR   K   s;    	q		 /
 .*+. . / / /	
(r   stop_gradientr	   stop_gradient_pc                    | S r   rJ   rQ   s    r   rL   rL   S   s    A r   c                  $    e Zd Zd
dZddZd Zd	S )SymbolicZeror&   r'   r   Nonec                    || _         d S r   r*   r9   s     r   r;   zSymbolicZero.__init__W   r<   r   r=   c                    | j         j        S r   )	__class__rE   r@   s    r   rA   zSymbolicZero.__repr__Z   s    >""r   c                H   	 t          | j        |          }t          |          }|t          j        u r|                    |           S |t          j        u rt          j        |j	        |           S |S # t          $ r$}t          | j        j         d|           |d }~ww xY w)Nz has no attribute )getattrr&   r    r   aval_propertyfgetaval_methodtypes
MethodTypefunKeyErrorAttributeErrorr[   rE   )r:   nameattrterrs        r   __getattr__zSymbolicZero.__getattr___   s    TY%%d t**a	
d 	 	 yy   $///    ^$
>
>
>
> s   A3 3
B!=BB!N)r&   r'   r   rX   rD   )rE   rF   rG   r;   rA   rj   rJ   r   r   rW   rW   V   sK           # # # #
    r   rW   JaxTypeOrTracer | ZeroJaxTypeOrTracer | SymbolicZeroc                Z    t          |           t          u rt          | j                  n| S r   )r    r4   rW   r&   rQ   s    r   replace_internal_symbolic_zerosrn   r   s%    !%aDaf			a7r   c                Z    t          |           t          u rt          | j                  n| S r   )r    rW   r4   r&   rQ   s    r   "replace_rule_output_symbolic_zerosrp   v   s$    aL00afa7r   
zeros_likezeros_like_p)r   r   r   r   r   r   )r&   r'   r   r   )r0   r1   r   r   )r   r   r   r   )r   rk   r   rl   )r   rl   r   rk   )0
__future__r   collections.abcr   ra   typingr   r   jax._srcr   r   jax._src.corer	   r
   r   r   jax._src.tree_utilr   jax._src.typingr   r   jax._src.utilr   register_exclusion__file__r   mapr   r   	add_any_pdef_implr"   r   def_abstract_evalr%   r+   r)   __annotations__r/   r6   r4   rR   rT   rW   JaxTypeOrTracerrn   rp   rr   rJ   r   r   <module>r      s   # " " " " " " $ $ $ $ $ $                # # # # # # M M M M M M M M M M M M 3 3 3 3 3 3 , , , , , , , , " " " " " " ! !( + + +GCLL" " " " 	)$$	* * *  ! ! ! !- - - -8:  : : : :C C C   0 0 0 0 0 0 0 0  T113M3M N N N    (i88 8 8 8 8   , - - -  ! !++ . . .       4 8 8 8 88 8 8 8 $)L11 1 1 1 1 1 1r   