o
    ߗis                     @   sx  d dl Z d dlZd dlmZmZ 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dZesbddlm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re	j Z dd Z!e	"e	j#Z$e	j%Z%e	"e	j&Z&nej ej!Z Z!ej$Z$ej%Z%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ejej+ e`,ere	"e	j-e_-n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!d0dd) e!d1d2d3 e!d4d2d3 e!d5dd) e!d6dd2d7 e!d8dd2d9 e!d:dd2d9 e!d;dd2d9 e!d<dd2d9 e!d=dd2d9 e!d>dd2d9 e!d?dd2d9 e!d@ddd2dA e!dBdd2d9 e ej/j0j1dd2d9Z1dS )C    N)SequenceUnion)dim   )tree_flattentree_map)	wrap_typec                   @      e Zd ZdS )DimensionMismatchErrorN__name__
__module____qualname__ r   r   T/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/functorch/dim/__init__.pyr
          r
   c                   @   r	   )DimensionBindErrorNr   r   r   r   r   r      r   r   )op_propertiesT)	referencec                   @   s\   e Zd Zedd Zdd Zereej	Z	e
ejZnej	Z	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__8   s   .z_Tensor.__repr__N)r   r   r   propertyr    r   use_cclassmethod_C__torch_function___instancemethodexpandr   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   @   s    
r   c                   @   s0   e Zd ZeseejZeejZ	e
ejZdS )TensorN)r   r   r   r+   staticmethodr-   Tensor_from_batchedfrom_batchedTensor_from_positionalfrom_positionalr/   
Tensor_sumsumr   r   r   r   r4   F   s
    

r4   c                 C   s   t  }t| ||||g|S r   )r    stackr1   )tensorsr   new_dimnr   r   r   catM   s   r@   c              	   O   s4   t tj| }tt| tt|g|R i | d S r   )getattrtorchr4   setattrr   r-   r/   _wrap)nameargskwargsorigr   r   r   _defU   s   (rI   meanr;   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_offsetrc   cummax)rZ   rc   cummincumprodcumprod_cumsumcumsum_logcumsumexprenorm)rg   rZ   rc   softmax)2disinspecttypingr   r   functorch._C	functorchrB   r   r-   r   r   r   _patch_tensor_classr    DimListdimlists	Exceptionr
   r    r   dictfromkeys	pointwiser+   r   r   r4   
TensorLiker   r@   rD   rI   r/   __getitem__t__getitem__r<   split__setitem__t__setitem__r0   r1   r.   r"   order
positionalnn
functionalrp   r   r   r   r   <module>   s    
