o
    "if                     @   sF   g Z eG d d dZG dd dZdd Zi ZdddZd	d
 ZdS )c                   @   s"   e Zd ZU eed< dZeed< dS )	LevelInfolevelTaliveN)__name__
__module____qualname__int__annotations__r   bool r
   r
   `/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/functorch/dim/dim.pyr   	   s   
 r   c                   @   sd   e Zd Zddededef fddZdd Zedd	 Z	e	j
defd
d	Z	edd Zdd ZdS )DimNnamesizec                 C   s(   || _ d | _d | _|d ur|| _d S d S N)r   _size_vmap_levelr   )selfr   r   r
   r
   r   __init__   s   
zDim.__init__c                 C   sl   | j d ur.dt| j _td js0t td jkr4t  t  td js2t td jksd S d S d S d S d S )NF)	r   Z_vmap_active_levels_vmap_stackr   _vmap_levelsZcurrent_levelr   Z_vmap_decrement_nestingpopr   r
   r
   r   __del__   s   
zDim.__del__c                 C   s   | j sJ | jS r   )is_boundr   r   r
   r
   r   r       s   
zDim.sizec                 C   sd   | j d u r|| _ t|d| _tt| _tt| j d S | j |kr0td|  d| j  d| d S )NZsamezDim 'z*' previously bound to a dimension of size z$ cannot bind to a dimension of size )	r   Z_vmap_increment_nestingr   lenr   r   appendr   ZDimensionBindError)r   r   r
   r
   r   r   %   s   


c                 C   s
   | j d uS r   )r   r   r
   r
   r   r   2   s   
zDim.is_boundc                 C   s   | j S r   r   r   r
   r
   r   __repr__6   s   zDim.__repr__r   )r   r   r   strUnionr   r   r   propertyr   setterr   r   r
   r
   r
   r   r      s    	

r   c                 C   s   | j dks| j dksJ | jS )N
STORE_FAST
STORE_NAME)opnameargval)instr
   r
   r   extract_name:   s   r(       c                    s   t  }|d us
J |j}|d usJ |j|j}}||f}|tvrz|d d tt|j }|j	dks>|j	dkrS|j
| dkrGtnt  fddt|< n'|j	dksZJ |j
}tfd	d
t|D t|  fddt|< t|  S )N      r#   r$   r)   c                      s
    dS )Nr   r
   r
   )ctorr   r
   r   <lambda>R   s   
 zdims.<locals>.<lambda>UNPACK_SEQUENCEc                 3   s$    | ]}t  d  |  V  qdS )r+   N)r(   ).0i)firstinstructionsr
   r   	<genexpr>V   s    
zdims.<locals>.<genexpr>c                      s   t  fddtD S )Nc                 3   s.    | ]\}}| k rt |nt|d V  qdS )r   N)r   DimList)r/   r0   n)
first_listr
   r   r3   Z   s
    
z)dims.<locals>.<lambda>.<locals>.<genexpr>)tuple	enumerater
   )r6   namesr
   r   r-   Z   s    )inspectcurrentframef_backf_codef_lasti_cachelistdisget_instructionsr%   r&   r   r4   r7   ranger   )listsframeZcalling_framecodelastikeyunpackZndimsr
   )r,   r1   r6   r2   r   r9   r   dimsB   s,   
rJ   c                    sF   fdd |d u rS t |ttfst fdd|D S  |fS )Nc                    s$   t | tr| S t | tsJ  |  S r   )
isinstancer   r   )a)
positionalr
   r   convertb   s   
z_dim_set.<locals>.convertc                 3   s    | ]} |V  qd S r   r
   )r/   rL   )rN   r
   r   r3   l   s    z_dim_set.<locals>.<genexpr>)rK   r   r   r7   )rM   argr
   )rN   rM   r   _dim_seta   s   
rP   N)r)   )r   	dataclassr   r   r(   r?   rJ   rP   r
   r
   r
   r   <module>   s   +
