U
    9%eo                     @   s~  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sd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rBe	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                   @   s   e Zd ZdS )DimensionMismatchErrorN__name__
__module____qualname__ r   r   U/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/functorch/dim/__init__.pyr	      s   r	   c                   @   s   e Zd ZdS )DimensionBindErrorNr
   r   r   r   r   r      s   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r8e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=)Z_tensorr   r"   r   size)r   ZtensorZ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*   ZTensor_from_batchedZfrom_batchedZTensor_from_positionalZfrom_positionalr,   Z
Tensor_sumsumr   r   r   r   r1   D   s   

r1   c                 C   s   t  }t| ||||g|S r   )r    stackr.   )Ztensorsr   Znew_dimnr   r   r   catK   s    r6   c                 O   s.   t tj| }tt| tt|f|| d S r   )getattrtorchr1   setattrr   r*   r,   _wrap)nameargskwargsorigr   r   r   _defS   s    r?   Zmeanr3   allZamaxZaminZaminmaxanyZcount_nonzeroZ	logsumexpZnanmeanZnansumprodZstd   )Zkeepdim_offsetvarmax)
single_dimminZargmaxZargminZkthvalueZmedianZ	nanmedianmodesortF)reduceZargsortZunbindchunk)
dim_offsetrJ   Zcummax)rF   rJ   ZcumminZcumprodZcumprod_ZcumsumZcumsum_ZlogcumsumexpZrenorm)rL   rF   rJ   softmax)0disinspecttypingr   r   r8   Zfunctorch._CZ	functorchr   r*   r   r   r   Z_patch_tensor_classr    ZDimListZdimlists	Exceptionr	   r    r   Z	pointwiser(   r   r   r1   Z
TensorLiker   r6   r:   r?   r,   __getitem__Zt__getitem__r4   split__setitem__Zt__setitem__r-   r.   r+   r"   order
positionalnnZ
functionalrM   r   r   r   r   <module>   s   
