
    5h#                        S SK Jr  S SKJrJrJr  S SKrS SKJrJ	r	  S SK
rS SKJr  \R                  " \5      r " S S\5      r " S S	\\S
9r " S S\5      rg)    )annotations)ABCABCMetaabstractmethodN)AnyCallable)	DTypeLikec                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )LazyMeta   c                   > S
S jnXSS'   SS.SS jjnS H  nSU S3nU" USS9X8'   M     S	 H  n	SU	 S3nU" USS9X8'   M     [         T
U ]  " XX#40 UD6$ )Nc                
  ^ [        U R                  T5      n[        U5      (       a  [        U 5      R	                  U4S jU S9$ [        X R                  5      (       a$  [        U 5      R	                  U4S j5      " U 5      $ U$ )Nc                (   > [        U T5      " U0 UD6$ Ngetattr)sargskwargsnames      1/home/james-whalen/llama.cpp/gguf-py/gguf/lazy.py<lambda>7LazyMeta.__new__.<locals>.__getattr__.<locals>.<lambda>   s    40@$0Q&0Q    )use_selfc                   > [        U T5      $ r   r   )r   r   s    r   r   r      s    WQ5Er   )r   _metacallabletype_wrap_fn
isinstance_tensor_type)selfr   	meta_attrs    ` r   __getattr__%LazyMeta.__new__.<locals>.__getattr__   sv    

D1I	""Dz**Q! +   I'8'899Dz**+EFtLL ! r   r%   F	meta_noopc                  ^ ^ UU 4S jnU$ )Nc                   > [        U 5      R                  [        [        U 5      R                  T5      TS9" U /UQ70 UD6$ )Nr'   )r   r    r   r"   )r#   r   r   r(   op_names      r   wrapped_special_op=LazyMeta.__new__.<locals>.mk_wrap.<locals>.wrapped_special_op'   sT    Dz**DJ33W=' +  ) ) "() )r    )r+   r(   r,   s   `` r   mk_wrap!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   strreturnr   )r+   r_   r(   bool)super__new__)clsr   bases	namespacer   r%   r/   	binary_op	attr_name
special_op	__class__s             r   rc   LazyMeta.__new__   s    	! $/- 
 8= 	&
I YKr*I $+9#EI 

J ZL+I#*9#FI 	
 ws%EfEEr   r.   )r   r_   re   ztuple[type, ...]rf   dict[str, Any])__name__
__module____qualname____firstlineno__rc   __static_attributes____classcell__rj   s   @r   r   r      s    4F 4Fr   r   c                    ^  \ rS rSr% S\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   SSSSS.SU 4S jjjrSU 4S jjr\SS j5       r\	SSS.SS jj5       r
\	S S j5       r\	S S j5       r\	\S!S j5       5       r\	S S j5       rSrU =r$ )"LazyBaseH   r   r"   r   r   
Any | None_datatuple_argsrl   _kwargsCallable[[Any], Any] | None_funcNr.   )datar   r   funcc                  > [         TU ]  5         Xl        X l        X0l        Ub  UO0 U l        XPl        U R                  c  U R                  c   eg g r   )rb   __init__r   rx   rz   r{   r}   )r#   metar~   r   r   r   rj   s         r   r   LazyBase.__init__P   sO    


!'!3v
zz%)???)?%r   c                ^   > SU R                   ;  a  [        SU < 35      e[        TU ]  5       $ )Nr"   z,property '_tensor_type' must be defined for )__dict__	TypeErrorrb   __init_subclass__)rd   rj   s    r   r   LazyBase.__init_subclass__Y   s0    -J3'RSSw(**r   c                   [        U [        [        45      (       aQ  / nU  H'  nUR                  [        R                  X15      5        M)     [        U [        5      (       a  [        U5      nU$ [        U [        5      (       a  U" U 5      $ U $ r   )r!   listry   appendru   _recurse_apply)ofnLitems       r   r   LazyBase._recurse_apply^   sq     a$''A00:; !U##!HH8$$a5LHr   F)r   r(   c                   ^ ^^^ U UUU4S jnU$ )Nc                 z  >^^^^ Tc  0 mTb  T4OSU -   n [         R                  U S 5      n[        T[        5      (       a  T(       d
   T
" U0 TD6mO[        U 5      S:  d   eU S   m[        TT	5      (       d   eTR                  mTSLai  [        T[        5      (       a8  Tu  p4[        U5      (       d   eT	R                  X4" TR                  5      5      mOT	R                  TTR                  5      m[        TT	R                  5      (       a  T	" T	R                  T5      U TT
S9$ [        T[        5      (       aS  [        U	4S jT 5       5      (       a9  U S /mS	S
U
4S jjjm[        U	UUUU4S j[        [        T5      5       5       5      $ @T	R                  U 5      nT
" U0 TD6$ ! [         a    S m Nf = f)Nr.   c                    U R                   $ r   )r   )ts    r   r   7LazyBase._wrap_fn.<locals>.wrapped_fn.<locals>.<lambda>t   s    r   r   Tr   r   r   r   c              3  P   >#    U  H  n[        UTR                  5      v   M     g 7fr   )r!   r"   ).0r   rd   s     r   	<genexpr>8LazyBase._wrap_fn.<locals>.wrapped_fn.<locals>.<genexpr>   s$     /]Y\TU
1c>N>N0O0OY\s   #&c               ^   > [        U 5      S:X  d   eU S   c  T" U S   0 UD6U S'   U S   U   $ )N      r   )r^   )aikwr   s      r   eager_tuple_elementBLazyBase._wrap_fn.<locals>.wrapped_fn.<locals>.eager_tuple_element   s>    q6Q;&;t|!1Q42!Q47Nr   c              3  ^   >#    U  H"  nT" TR                  TU   5      TU4TTS 9v   M$     g7f)r   N)eager_to_meta)r   r   rd   r   r   resshared_argss     r   r   r      sH       [  KZ  FGSc&7&7A&?{TUFV_el  A  KZs   *-)r   )r   z	list[Any]r   intr`   ru   )ru   r   r!   ra   NotImplementedErrorr^   r   ry   r   meta_with_dtype_and_shapeshaper"   r   allrangeto_eager)r   r   	meta_argsdtyper   
eager_argsr   r   r   rd   r   r(   r   s    `    @@@r   
wrapped_fn%LazyBase._wrap_fn.<locals>.wrapped_fno   s   ~#+#7XKR4GD //6GHI )T**9i262C 4y1}$}1g!#s++++iiD(!)U33'0'.!;;E5CST!;;IsyyQ#s//00 1 1# 6T&WYZZC''C/]Y\/],],]%)4L# #
   [  [  KP  QT  UX  QY  KZ  [  [  [ !\\$/
:000G + Cs   
F+ +F:9F:r.   )rd   r   r   r(   r   s   ```` r   r    LazyBase._wrap_fnm   s    .	1 .	1^ r   c                <   ^ ^ SU U4S jjmT R                  UT5      $ )Nc                  > U R                   b  U R                   $ U R                  c   eTR                  U R                  T5      U l        U R                  " U R                  0 U R                  D6U l         U R                   c   eU R                   R
                  U R                  R
                  :X  d   eU R                   R                  U R                  R                  :X  d   eU R                   $ r   )rx   r}   r   rz   r{   r   r   r   )_trd   simple_to_eagers    r   r   *LazyBase.to_eager.<locals>.simple_to_eager   s    xx#xx 88'''))"((ODBHxx8RZZ8BH88'''88>>RXX^^33388>>RXX^^33388Or   )r   ru   r`   r   )r   )rd   r   r   s   ` @r   r   LazyBase.to_eager   s"    	 	" !!!_55r   c                N    U R                  UR                  UR                  5      $ r   )r   r   r   rd   r   s     r   r   LazyBase.eager_to_meta   s    ,,QWWagg>>r   c                    g r   r.   )rd   r   r   s      r   r   "LazyBase.meta_with_dtype_and_shape   s    GKr   c                    [        U5      U L a  U$ [        XR                  5      (       a  U " U R                  U5      US9$ [	        [        U5      < SU R                  < 35      $ )N)r   r~   z is not compatible with )r   r!   r"   r   r   r   s     r   
from_eagerLazyBase.from_eager   s]    7c>H++,,C--a0q99Q{*B3CSCSBVWXXr   )rz   rx   r}   r{   r   )
r   r   r~   rw   r   ry   r   zdict[str, Any] | Noner   r|   )r`   None)r   r   r   Callable[[Any], Any]r`   r   )r   r   r   zLazyBase | Noner(   zQbool | DTypeLike | tuple[DTypeLike, Callable[[tuple[int, ...]], tuple[int, ...]]]r`   r   )r   r   r`   r   )r   r   r   r   r`   r   )rm   rn   ro   rp   __annotations__r   r   staticmethodr   classmethodr    r   r   r   r   r   rq   rr   rs   s   @r   ru   ru   H   s    JL&&8<Bpt  [_ @ @+
   CG  in 0 0d 6 6( ? ? K  KY Yr   ru   )	metaclassc                  X    \ rS rSr% \R
                  rS\S'   \S	S j5       r	S r
S rSrg)
LazyNumpyTensor   tuple[int, ...]r   c                    [         R                  " SU5      n[         R                  R                  R	                  X2S U 5       5      $ )Nr   c              3  &   #    U  H  nS v   M	     g7f)r   Nr.   )r   _s     r   r   <LazyNumpyTensor.meta_with_dtype_and_shape.<locals>.<genexpr>   s     =OAas   )npzeroslibstride_tricks
as_strided)rd   r   r   cheats       r   r   )LazyNumpyTensor.meta_with_dtype_and_shape   s7    
 E"vv##..u=O=OPPr   c                    [        U 5      R                  XR                  R                  5      nX4U-   n[        U 5      " XEUS S9$ )Nc                &    U R                   " U0 UD6$ r   )astype)r   r   r   s      r   r   (LazyNumpyTensor.astype.<locals>.<lambda>   s    efememose~w}e~r   r   )r   r   r   r   )r#   r   r   r   r   	full_argss         r   r   LazyNumpyTensor.astype   sF    Dz33E::;K;KLNT)	DztFJ~  A  	Ar   c                P    [         R                  U 5      nUR                  " U0 UD6$ r   )r   r   tofile)r#   r   r   eagers       r   r   LazyNumpyTensor.tofile   s&    ((.||T,V,,r   r.   N)r   r	   r   r   r`   znp.ndarray[Any, Any])rm   rn   ro   rp   r   ndarrayr"   r   r   r   r   r   rq   r.   r   r   r   r      s0    ::LQ QA
-r   r   )
__future__r   abcr   r   r   loggingtypingr   r   numpyr   numpy.typingr	   	getLoggerrm   loggerr   ru   r   r.   r   r   <module>r      sZ    " , ,     " 
		8	$6Fw 6Ft~Ysh ~YB-h -r   