
    vh
                     .   d Z 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
 ej                  dddd	d
eedf   dej                  j                  dedz  dede	j$                  dz  f
d       Zej                  dddd	dededz  dede	j$                  dz  fd       Zd Zdddej                  j,                  dej                  j,                  deez  dz  deeej.                  gdf   gdf   fdZ ej2                  ddd      ZeZdefdZd Zy)zPallas helper functions.    )CallableN)checkify)config)core)pallas_callFmemory_space	interpretbackendshape.dtyper	   r
   r   c                H    t        t        j                  | |      |||      S )Nr   )
empty_likejaxShapeDtypeStruct)r   r   r	   r
   r   s        R/opt/face_recognition/venv/lib/python3.12/site-packages/jax/_src/pallas/helpers.pyemptyr      s*     
	5%(	
     xc                    t         j                  j                   t        j                  d t        j
                  j                  fd|       | ||             S )Nc                       y N )_s    r   <lambda>zempty_like.<locals>.<lambda>6       r   c                 0    t        j                        S )N)r	   )pl_core	BlockSpec)r   r	   s    r   r   zempty_like.<locals>.<lambda>8   s    G%%<@ r   )	out_specs	out_shaper
   r   )r   MemorySpaceANYr   r   treemap)r   r	   r
   r   s    `  r   r   r   *   s[     &&**L	
	 	 
@! 	
 	
 	r   c                       fd}|S )Nc                     t        t              rr |         y y t        j                  j	                  | d        y )Nc                       y r   r   r   r   r   r   z(when.<locals>._wrapped.<locals>.<lambda>F   r   r   )
isinstanceboolr   laxcond)f	conditions    r   _wrappedzwhen.<locals>._wrappedA   s0    )T"		 
 
ggll9a.r   r   )r.   r/   s   ` r   whenr0   @   s    / 
/r   )unrolllowerupperr1   returnc                      fd}|S )Nc                 V     t         j                  j                   fdd        y )Nc                      |       S r   r   )idxr   bodys     r   r   z)loop.<locals>.decorator.<locals>.<lambda>R   s    T#Y r   )init_valr1   )r   r+   	fori_loop)r9   r2   r1   r3   s   `r   	decoratorzloop.<locals>.decoratorP   s&    GGu.f  r   r   )r2   r3   r1   r<   s   ``` r   loopr=   J   s    
 
r   jax_pallas_enable_debug_checkszTIf set, ``pl.debug_check`` calls are checked at runtime. Otherwise, they are a noop.)defaulthelpc                  "    t         j                  S )z#Returns runtime checks are enabled.)_ENABLE_DEBUG_CHECKSvaluer   r   r   debug_checks_enabledrD   e   s    		#	##r   c                 .    t        j                  | |      S )zpCheck the condition if
  :func:`~jax.experimental.pallas.enable_debug_checks` is set, otherwise
  do nothing.
  )r   debug_check)r.   messages     r   rF   rF   j   s    
 
		i	11r   )__doc__collections.abcr   r   jax._srcr   r   jax._src.pallasr   r   r   
named_calltupleinttyping	DTypeLikeobjectr*   Backendr   r   r0   	ArrayLikeArrayr=   
bool_staterB   enable_debug_checksrD   rF   r   r   r   <module>rW      s    $ 
   + ' 
 #'&*c?:: 4-	
  __t#    #'&* 4- 	
 __t# * !%	:::: $J	
 xT)*+T12 )v(($		  + $d $
2r   