o
    i0                     @   s  d dl Zd dlZd dl mZ ddlmZmZ ddlmZ e  ej	ej
ejZ	Z
ZG dd deZG dd	 d	eZdd
lmZ eejdZG dd dZeejfZG dd dejeZG dd deejZdd ZejZdd ZeejZejZeejZeej Z!ee_e!e_ eej_ee_eej"ej_"eej#ej_#eeejej$ e`%eej&e_&ed ed ed ed ed ed ed ed ed ed ed  ed! ed"d#d$ ed%d#d$ ed&dd' ed(dd' ed)dd' ed*dd' ed+dd' ed,dd' ed-dd' ed.dd' ed/d0d1 ed2d0d1 ed3dd' ed4dd0d5 ed6dd0d7 ed8dd0d7 ed9dd0d7 ed:dd0d7 ed;dd0d7 ed<dd0d7 ed=dd0d7 ed>ddd0d? ed@dd0d7 eej'j(j)dd0d7Z)dS )A    N)dim   )tree_flattentree_map)	wrap_typec                   @      e Zd ZdS )DimensionMismatchErrorN__name__
__module____qualname__ r   r   S/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/functorch/dim/__init__.pyr          r   c                   @   r   )DimensionBindErrorNr	   r   r   r   r   r      r   r   )op_propertiesTc                   @   sJ   e Zd Zedd Zdd ZeejZe	ej
Z
e	ejZdd ZdS )_Tensorc                 C   s   t dd | jD S )Nc                 s   s    | ]
}t |tr|V  qd S N)
isinstanceDim).0dr   r   r   	<genexpr>"   s    z_Tensor.dims.<locals>.<genexpr>)tuple_levelsselfr   r   r   dims    s   z_Tensor.dimsc                 C   s   | j S r   ndimr   r   r   r   r   $   s   z_Tensor.dimc                    sD   | j | j| j}} | dt fdd|D  dt|  S )Nz
with dims=c                 3   s&    | ]}t |tr|  n|V  qd S r   )r   int)r   lr   r   r   r   .   s   $ z#_Tensor.__repr__.<locals>.<genexpr>z sizes=)_tensorr   r   r   size)r   tensorlevelsr   r   r   __repr__,   s   .z_Tensor.__repr__N)r
   r   r   propertyr   r   classmethod_C__torch_function___instancemethodexpandindexr&   r   r   r   r   r      s    

r   c                   @   s   e Zd ZejZdS )r   N)r
   r   r   object
__format__r   r   r   r   r   4   s    
r   c                   @   s"   e Zd ZeejZeejZ	dS )TensorN)
r
   r   r   staticmethodr)   Tensor_from_positionalfrom_positionalr+   
Tensor_sumsumr   r   r   r   r0   :   s    
r0   c                 C   s   t  }t| ||||g|S r   )r   stackr-   )tensorsr   new_dimnr   r   r   cat?   s   r:   c              	   O   s4   t tj| }tt| tt|g|R i | d S r   )getattrtorchr0   setattrr   r)   r+   _wrap)nameargskwargsorigr   r   r   _defG   s   (rC   meanr5   allamaxaminaminmaxanycount_nonzero	logsumexpnanmeannansumprodstd   )keepdim_offsetvarmax)
single_dimminargmaxargminkthvaluemedian	nanmedianmodesortF)reduceargsortunbindchunk)
dim_offsetr]   cummax)rT   r]   cummincumprodcumprod_cumsumcumsum_logcumsumexprenorm)ra   rT   r]   softmax)*functorch._C	functorchr<   r   r)   r   r   r   _patch_tensor_classr   DimListdimlists	Exceptionr   r    r   dictfromkeys	pointwiser   r0   
TensorLiker   r:   r>   rC   r+   __getitem__t__getitem__r6   split__setitem__t__setitem__r,   r-   r*   r   ordernn
functionalrj   r   r   r   r   <module>   s    
