Ë
    ÃÓ^j2  ã                  ób   — d dl mZ d dlmZ d dlmZmZ d dlZerddlm	Z	 e G d„ d«      «       Z
y)	é    )Úannotations)Ú	dataclass)ÚAnyÚTYPE_CHECKINGNé   ©ÚDimEntryc                  ór   — e Zd ZU ded<   ded<   ded<   ded<   dd„Zdd	„Zdd
„Ze	 d	 	 	 	 	 	 	 dd„«       Zy)Ú
TensorInfoztorch.Tensor | NoneÚtensorzlist[DimEntry]ÚlevelsÚboolÚ
has_deviceÚbatchedtensorc                ód   ‡— ddl mŠ t        ˆfd„| j                  D «       «      st	        d«      ‚y )Nr   r   c              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­w©N)Ú
isinstance)Ú.0Úlr	   s     €úe/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/functorch/dim/_tensor_info.pyú	<genexpr>z+TensorInfo.__post_init__.<locals>.<genexpr>   s   øè ø€ Ò@¨q”:˜a ×*Ñ@ùs   ƒz%All levels must be DimEntry instances)Ú
_dim_entryr	   Úallr   ÚAssertionError)Úselfr	   s    @r   Ú__post_init__zTensorInfo.__post_init__   s*   ø€ Ý(äÓ@°D·K±KÔ@Ô@Ü Ð!HÓIÐIð Aó    c                ó2   — ddl m}  || j                  «      S )Nr   )Úndim_of_levels)r   r    r   )r   r    s     r   ÚndimzTensorInfo.ndim   s   € Ý.á˜dŸk™kÓ*Ð*r   c                ó   — | j                   d uS r   )r   )r   s    r   Ú__bool__zTensorInfo.__bool__   s   € Ø�{‰{ $Ð&Ð&r   c                ó”  — ddl m}m}m} |j	                  | «      rNt        | j                  «       | j                  «       | j                  «       |r| j                  «       «      S d «      S |j	                  | «      rS| j                  r| j                  «       nd }|r| j                  r| j                  «       nd }t        | || «      gd|«      S t        | t        j                  «      rGg }t        | j                  «        d«      D ]  }	|j!                   ||	«      «       Œ t        | |d| «      S |rt#        d«      ‚t        d g dd «      S )Nr   )ÚDimr	   ÚTensorFr   Tzexpected a tensor object)Ú r%   r	   r&   Úcheck_exactr   Ú_get_tensorÚ_get_levelsÚ_get_has_deviceÚ_get_batchtensorÚis_boundÚ
_get_ranger   ÚtorchÚrangeÚdimÚappendÚ
ValueError)
ÚhÚensure_batchedÚensure_presentr%   r	   r&   r   Úbatchtensorr   Úis
             r   ÚcreatezTensorInfo.create"   s2  € ÷ 	,Ñ+à×Ñ˜aÔ äØ—‘“Ø—‘“Ø×!Ñ!Ó#Ù(6�×"Ñ"Ó$ó	ð ð =Aó	ð ð �_‰_˜QÔà'(§z¢z�Q—\‘\”^°tˆFá(6¸1¿:º:�×"Ñ"Ô$È4ð ô ØÙ˜!“�ØØó	ð ô ˜œ5Ÿ<™<Ô(àˆFÜ˜AŸE™E›G˜8 QÓ'ò +�Ø—‘™h q›kÕ*ð+ä˜a ¨¨qÓ1Ð1áÜ Ð!;Ó<Ð<Ü˜d B¨¨tÓ4Ð4r   N)ÚreturnÚNone)r:   Úint)r:   r   )TT)r4   r   r5   r   r6   r   r:   r   )	Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r!   r#   Ústaticmethodr9   © r   r   r   r      sa   … àÓØÓØÓØ&Ó&óJó+ó
'ð àDHð"5Øð"5Ø $ð"5Ø=Að"5à	ò"5ó ñ"5r   r   )Ú
__future__r   Údataclassesr   Útypingr   r   r/   r   r	   r   rB   r   r   ú<module>rF      s2   ðÝ "å !ß %ã ñ Ý$ð ÷75ð 75ó ñ75r   