
    `i#                        d dl mZ d dlmZmZmZ d dlZd dlmZm	Z	 d dl
Zd dlmZ  ej        e          Z G d de          Z G d d	ee
          Z G d de          ZdS )    )annotations)ABCABCMetaabstractmethodN)AnyCallable)	DTypeLikec                        e Zd Zd fdZ xZS )	LazyMetanamestrbasestuple[type, ...]	namespacedict[str, Any]c                    dd}||d<   dddd}dD ]}d| d} ||d          ||<   dD ]}	d|	 d} ||d          ||<    t                      j        | |||fi |S )Nr   r   returnr   c                $   t          | j                  }t          |          r't          |                               fd|           S t          || j                  r. t          |                               fd          |           S |S )Nc                0     t          |           |i |S Ngetattr)sargskwargsr   s      ]/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gguf/lazy.py<lambda>z7LazyMeta.__new__.<locals>.__getattr__.<locals>.<lambda>   s!    0@40@0@$0Q&0Q0Q     )use_selfc                $    t          |           S r   r   )r   r   s    r   r   z7LazyMeta.__new__.<locals>.__getattr__.<locals>.<lambda>   s    WQ5E5E r   )r   _metacallabletype_wrap_fn
isinstance_tensor_type)selfr   	meta_attrs    ` r   __getattr__z%LazyMeta.__new__.<locals>.__getattr__   s    
D11I	"" !Dzz**QQQQ! +    It'899 !FtDzz**+E+E+E+EFFtLLL ! r   r)   F	meta_noopop_namer+   boolc                     fd}|S )Nc                     t          |                               t          t          |           j                            | g|R i |S )Nr*   )r#   r$   r   r&   )r'   r   r   r+   r,   s      r   wrapped_special_opz=LazyMeta.__new__.<locals>.mk_wrap.<locals>.wrapped_special_op'   sp    tDzz**DJJ3W==' +   ) ) ) ) "() ) )r    )r,   r+   r0   s   `` r   mk_wrapz!LazyMeta.__new__.<locals>.mk_wrap%   s*    ) ) ) ) ) )
 &%r   )*ltleeqnegegtnotabsaddandfloordivinvertlshiftmodmulmatmulnegorpospowrshiftsubtruedivxoriaddiand	ifloordivilshiftimodimuliorirshiftisubixorraddrand	rfloordivrmulrorrpowrsubrtruedivrxor__T)getitemsetitemlen)r   r   r   r   )r,   r   r+   r-   )super__new__)clsr   r   r   r   r)   r2   	binary_op	attr_name
special_op	__class__s             r   rb   zLazyMeta.__new__   s    	! 	! 	! 	! $/	- 
 8= 	& 	& 	& 	& 	& 	&
 
	F 
	FI +Y***I $+79#E#E#EIi  
 	G 	GJ ,Z+++I#*79#F#F#FIi  uwwsD%EEfEEEr   )r   r   r   r   r   r   )__name__
__module____qualname__rb   __classcell__rg   s   @r   r   r      sG        4F 4F 4F 4F 4F 4F 4F 4F 4F 4Fr   r   c                      e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   dddddd- fdZd. fdZed/d            Zedddd0d%            Z	ed1d'            Z
ed1d(            Zeed2d+                        Zed1d,            Z xZS )3LazyBaser#   r&   r   r!   
Any | None_datatuple_argsr   _kwargsCallable[[Any], Any] | None_funcNr1   )datar   r   funcmetarv   r   r   dict[str, Any] | Nonerw   c                   t                                                       || _        || _        || _        ||ni | _        || _        | j        	| j        J d S d S r   )ra   __init__r!   rp   rr   rs   ru   )r'   rx   rv   r   r   rw   rg   s         r   r{   zLazyBase.__init__P   sf    


!'!3vv
z%)?)??%%)?)?r   r   Nonec                z    d| j         vrt          d|           t                                                      S )Nr&   z,property '_tensor_type' must be defined for )__dict__	TypeErrorra   __init_subclass__)rc   rg   s    r   r   zLazyBase.__init_subclass__Y   s=    --R3RRSSSww((***r   ofnCallable[[Any], Any]c                4   t          | t          t          f          r[g }| D ]0}|                    t                              ||                     1t          | t                    rt          |          }|S t          | t                    r ||           S | S r   )r%   listrq   appendrn   _recurse_apply)r   r   Litems       r   r   zLazyBase._recurse_apply^   s     a$'' 
	A < <00r::;;;;!U## !HHH8$$ 	2a55LHr   F)r   r+   r   r   LazyBase | Noner+   Qbool | DTypeLike | tuple[DTypeLike, Callable[[tuple[int, ...]], tuple[int, ...]]]c                     fd}|S )Nc                    i fnd| z   } t                               | d           }t          t                    rs	  
|i n# t          $ r d Y nw xY wt          |           dk    sJ | d         t          	          sJ j        durkt          t                    r;\  }}t          |          sJ 		                    | |j
                            n		                    j
                  t          	j                  r" 		                              | 
          S t          t                    r_t          	fdD                       rD| d gdd
fdt          	fdt          t                              D                       S 	                    |           } 
|i S )Nr1   c                    | j         S r   )r!   )ts    r   r   z7LazyBase._wrap_fn.<locals>.wrapped_fn.<locals>.<lambda>t   s     r   r   Trx   r   r   rw   c              3  B   K   | ]}t          |j                  V  d S r   )r%   r&   ).0r   rc   s     r   	<genexpr>z8LazyBase._wrap_fn.<locals>.wrapped_fn.<locals>.<genexpr>   s1      /]/]TU
1c>N0O0O/]/]/]/]/]/]r   a	list[Any]iintr   rn   c               |    t          |           dk    sJ | d          | d         i || d<   | d         |         S )N      r   )r`   )r   r   kwr   s      r   eager_tuple_elementzBLazyBase._wrap_fn.<locals>.wrapped_fn.<locals>.eager_tuple_element   sE    q66Q;;;;t|!r1Q42!Q47Nr   c              3  l   K   | ].}                      |                   |f           V  /dS )r   N)eager_to_meta)r   r   rc   r   r   resshared_argss     r   r   z8LazyBase._wrap_fn.<locals>.wrapped_fn.<locals>.<genexpr>   sv        [  [  FGSSc&7&7A&?&?{TUFV_el  A  A  A  [  [  [  [  [  [r   )r   )r   r   r   r   r   rn   )rn   r   r%   r-   NotImplementedErrorr`   r!   rq   r"   meta_with_dtype_and_shapeshaper&   r   allrangeto_eager)r   r   	meta_argsdtyper   
eager_argsr   r   r   rc   r   r+   r   s    `    @@@r   
wrapped_fnz%LazyBase._wrap_fn.<locals>.wrapped_fno   s   ~#+#7XKKR4GD //6G6GHHI )T** R9 R"i2622CC*   CCC
 4yy1}}}}1g!#s+++++iD((!)U33 R'0u'..!;;E55CSCSTT!;;IsyQQ#s/00 1s 1 1# 6 6T&WYZZZZC'' 1C/]/]/]/]Y\/]/]/],],] 1%)4L# # # # # # #
   [  [  [  [  [  [  [  [  KP  QT  UX  QY  QY  KZ  KZ  [  [  [  [  [  [ !\\$//
r:0000s   A A A r1   )rc   r   r   r+   r   s   ```` r   r$   zLazyBase._wrap_fnm   s7    .	1 .	1 .	1 .	1 .	1 .	1 .	1 .	1^ r   r   c                @     d fd                      |          S )N_trn   r   r   c                :   | j         | j         S | j        J                     | j                  | _         | j        | j        i | j        | _         | j         J | j         j        | j        j        k    sJ | j         j        | j        j        k    sJ | j         S r   )rp   ru   r   rr   rs   r   r!   r   )r   rc   simple_to_eagers    r   r   z*LazyBase.to_eager.<locals>.simple_to_eager   s    x#x 8'''))"(ODDBHrx8RZ88BH8'''8>RX^33338>RX^33338Or   )r   rn   r   r   )r   )rc   r   r   s   ` @r   r   zLazyBase.to_eager   s?    	 	 	 	 	 	 	" !!!_555r   c                B    |                      |j        |j                  S r   )r   r   r   rc   r   s     r   r   zLazyBase.eager_to_meta   s    ,,QWag>>>r   r   r   c                    d S r   r1   )rc   r   r   s      r   r   z"LazyBase.meta_with_dtype_and_shape   s    GKtr   c                    t          |          | u r|S t          || j                  r  | |                     |          |          S t	          t          |          d| j                  S )N)rx   rv   z is not compatible with )r#   r%   r&   r   r   r   s     r   
from_eagerzLazyBase.from_eager   st    77c>>H3+,, 	Y3C--a00q9999QWW3CSWWXXXr   )
rx   r   rv   ro   r   rq   r   ry   rw   rt   )r   r|   )r   r   r   r   r   r   )r   r   r   r   r+   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )rh   ri   rj   __annotations__r{   r   staticmethodr   classmethodr$   r   r   r   r   r   rk   rl   s   @r   rn   rn   H   s        JJJLLL&&&&8<Bpt  [_ @ @ @ @ @ @ @ @+ + + + + +
    \ CG  in 0 0 0 0 0 [0d 6 6 6 [6( ? ? ? [? KKK ^ [KY Y Y [Y Y Y Y Yr   rn   )	metaclassc                  L    e Zd ZU ej        Zded<   edd            Zd Z	d	 Z
d
S )LazyNumpyTensortuple[int, ...]r   r   r	   r   np.ndarray[Any, Any]c                    t          j        d|          }t           j        j                            ||d |D                       S )Nr   c              3     K   | ]}d V  dS )r   Nr1   )r   _s     r   r   z<LazyNumpyTensor.meta_with_dtype_and_shape.<locals>.<genexpr>   s"      =O=OAa=O=O=O=O=O=Or   )npzeroslibstride_tricks
as_strided)rc   r   r   cheats       r   r   z)LazyNumpyTensor.meta_with_dtype_and_shape   sA    
 E""v#..ue=O=O=O=O=OPPPr   c                    t          |                               || j        j                  }| |f|z   } t          |           |||d           S )Nc                     | j         |i |S r   )astype)r   r   r   s      r   r   z(LazyNumpyTensor.astype.<locals>.<lambda>   s    emefemose~w}e~e~ r   r   )r#   r   r!   r   )r'   r   r   r   rx   	full_argss         r   r   zLazyNumpyTensor.astype   s_    Dzz33E4:;KLL5NT)	tDzzt)FJ~J~  A  A  A  	Ar   c                P    t                               |           } |j        |i |S r   )r   r   tofile)r'   r   r   eagers       r   r   zLazyNumpyTensor.tofile   s,    ((..u|T,V,,,r   N)r   r	   r   r   r   r   )rh   ri   rj   r   ndarrayr&   r   r   r   r   r   r1   r   r   r   r      sl         :LQ Q Q [QA A A
- - - - -r   r   )
__future__r   abcr   r   r   loggingtypingr   r   numpyr   numpy.typingr	   	getLoggerrh   loggerr   rn   r   r1   r   r   <module>r      s3   " " " " " " , , , , , , , , , ,                      " " " " " " 
	8	$	$6F 6F 6F 6F 6Fw 6F 6F 6Ft~Y ~Y ~Y ~Y ~Ysh ~Y ~Y ~Y ~YB- - - - -h - - - - -r   