o
    ho                     @   sz  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 dd ejD ZdZescd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d0dd+ ed1dd+ ed2dd+ ed3d4d5 ed6d4d5 ed7dd+ ed8dd4d9 ed:dd4d; ed<dd4d; ed=dd4d; ed>dd4d; ed?dd4d; ed@dd4d; edAdd4d; edBddd4dC edDdd4d; eej-j.j/dd4d;Z/dS )E    N)SequenceUnion)dim   )tree_flattentree_map)	wrap_typec                   @      e Zd ZdS )DimensionMismatchErrorN__name__
__module____qualname__ r   r   L/var/www/html/ai/venv/lib/python3.10/site-packages/functorch/dim/__init__.pyr
          r
   c                   @   r	   )DimensionBindErrorNr   r   r   r   r   r      r   r   )op_propertiesc                 C   s   i | ]}|d qS )Tr   ).0tr   r   r   
<dictcomp>   s    r   T)	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)r   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   8   s   $ z#_Tensor.__repr__.<locals>.<genexpr>z sizes=)_tensorr   r$   r   size)r!   tensorlevelsr   r#   r   __repr__6   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_positionalr1   
Tensor_sumsumr   r   r   r   r6   D   s
    

r6   c                 C   s   t  }t| ||||g|S r   )r"   stackr3   )tensorsr   new_dimnr   r   r   catK   s   rB   c              	   O   s4   t tj| }tt| tt|g|R i | d S r   )getattrtorchr6   setattrr   r/   r1   _wrap)nameargskwargsorigr   r   r   _defS   s   (rK   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_offsetre   cummax)r\   re   cummincumprodcumprod_cumsumcumsum_logcumsumexprenorm)ri   r\   re   softmax)0disinspecttypingr   r   rD   functorch._C	functorchr   r/   r   r   r   _patch_tensor_classr"   DimListdimlists	Exceptionr
   r    r   	pointwiser-   r   r   r6   
TensorLiker   rB   rF   rK   r1   __getitem__t__getitem__r>   split__setitem__t__setitem__r2   r3   r0   r$   order
positionalnn
functionalrr   r   r   r   r   <module>   s    
