a
    dS                     @   sv  d dl Z d dlmZmZ d dlZd dlZddlmZmZ ddl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r:e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)UnionSequence   )tree_flattentree_map)	wrap_type)dimc                   @   s   e Zd ZdS )DimensionMismatchErrorN__name__
__module____qualname__ r   r   _/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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>       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>!   r   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   1   r   z#_Tensor.__repr__.<locals>.<genexpr>z sizes=)Z_tensorr   r#   r   size)r    Ztensorlevelsr   r"   r   __repr__/   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   6   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   r3   <   s   

r3   c                 C   s   t  }t| ||||g|S r   )r!   stackr0   )Ztensorsr   Znew_dimnr   r   r   catC   s    r8   c              	   O   s4   t tj| }tt| tt|g|R i | d S r   )getattrtorchr3   setattrr   r,   r.   _wrap)nameargskwargsorigr   r   r   _defJ   s    rA   meanr5   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_offsetrM   Zcummax)rI   rM   ZcumminZcumprodZcumprod_ZcumsumZcumsum_ZlogcumsumexpZrenorm)rO   rI   rM   softmax)/r:   typingr   r   inspectdisr   r   r   Zfunctorch._Cr   r,   Z_patch_tensor_classr!   ZDimListZdimlists	Exceptionr	   r    r   Z	pointwiser*   r   r   r3   Z
TensorLiker   r8   r<   rA   r.   __getitem__Zt__getitem__r6   split__setitem__Zt__setitem__r/   r0   r-   r#   order
positionalnnZ
functionalrP   r   r   r   r   <module>   s   
