o
    i                     @   s^   d dl m  mZ d dlm  m  mZ d dlmZ d dlZG dd dZG dd dZ	dS )    Nuse_name_ofc                   @   s   e Zd Zdd Zdd ZdS )Lazyc                 C   s
   || _ d S N)get_xp)selfr    r   a/home/ubuntu/.local/lib/python3.10/site-packages/einx/_src/tracer/signature/classical/arrayapi.py__init__   s   
zLazy.__init__c                    s   t   fdd}|S )Nc                     s      }t| }|| i |S r   )r   getattr)argskwargsxpopnamer   r   r	   inner   s   
zLazy.__getattr__.<locals>.innerr   )r   r   r   r   r   r	   __getattr__   s   zLazy.__getattr__N)__name__
__module____qualname__r
   r   r   r   r   r	   r      s    r   c                   @   sP   e Zd Zdd Zedd Zedd Zedd Zed	d
 Zedd Z	dS )arrayapic                    s  | _ t|}tj|j _tj|j _tj|j	 _	tj|j
 _
tj|j _tj|j _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|jdd _tjj|j dd _ tjj|j!dd _!tjj|j"dd _"tjj|j#dd _#tjj|j$dd _$tj%|j& _&tj%|j' _'tj%|j( _(tj%|j) _)tj%|j* _*tj%|j+ _+tj%|j, _,tj%|j- _-tj%|j. _.tj%|j/ _/tj%|j0 _0tj%|j1 _1tj2  _2tj3|j3 _3tj4|j4 _4tj5|j5 _5tj6|j6 _6tj|j7 _7tj|j8 _8tj|j9 _9tj|j: _:t;j<tjj= fddddd _>d S )N   )num_outputsc                    s      j| S r   )_get_xplinalgdiagonal)xr   r   r	   <lambda>Q   s    z#arrayapi.__init__.<locals>.<lambda>T)axis_always_last)r   )?r   r   	signature	classicalpreserve_shapeasarray	set_shapereshape	transposepermute_dimsbroadcast_toarangeconcatenateconcatelementwiseaddsubtractmultiplytrue_dividefloor_dividedividelogical_and
logical_orwheremaximumminimumless
less_equalgreatergreater_equalequal	not_equal	logaddexpexplognegative	remainderreducesummeanvarstdprodcount_nonzeroallanyminmaxargmaxargmingetitemtakedotmatmuleinsumrollflipsortargsorttypesSimpleNamespacer   r   )r   r   r   r   r   r	   r
      sh   &zarrayapi.__init__c                 C   
   |   jS r   )r   int32r   r   r   r	   r]   S      
zarrayapi.int32c                 C   r\   r   )r   int64r   r   r   r	   r_   W   r^   zarrayapi.int64c                 C   r\   r   )r   float32r   r   r   r	   r`   [   r^   zarrayapi.float32c                 C   r\   r   )r   float64r   r   r   r	   ra   _   r^   zarrayapi.float64c                 C   r\   r   )r   boolr   r   r   r	   rb   c   r^   zarrayapi.boolN)
r   r   r   r
   propertyr]   r_   r`   ra   rb   r   r   r   r	   r      s    =



r   )
einx._src.tracer_srctracereinx._src.tracer.signaturer!   einx._src.util.functoolsr   rZ   r   r   r   r   r   r	   <module>   s    