§
    ŠŠtj,  ã                  óp   — d dl mZ d dlmZ erd dlmZ ddlmZ d dlZ G d„ d¦  «        Z	dd„Z
	 ddd„ZdS )é    )Úannotations)ÚTYPE_CHECKING)ÚSequenceé   ©ÚDimNc                  óT   — e Zd ZU ded<   ddd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )ÚDimEntryz	Dim | intÚdataNúDim | int | NoneÚreturnÚNonec                óæ   — ddl m} t          |¦  «        t          u r|dk    rt	          d|› �¦  «        ‚n4|€d}n/t          ||¦  «        st	          dt          |¦  «        › �¦  «        ‚|| _        d S )Nr   r   r   zExpected negative int, got zExpected Dim, got )Ú r   ÚtypeÚintÚAssertionErrorÚ
isinstancer   )Úselfr   r   s      úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/functorch/dim/_dim_entry.pyÚ__init__zDimEntry.__init__   s‘   € ØÐÐÐÐÐå�‰:Œ:�ÐÐØ�qŠyˆyÝ$Ð%IÀ4Ð%IÐ%IÑJÔJÐJð àˆ\ØˆDˆDå˜d CÑ(Ô(ð HÝ$Ð%F½$¸t¹*¼*Ð%FÐ%FÑGÔGÐGØˆŒ	ˆ	ˆ	ó    ÚotherÚobjectÚboolc                ó  — t          |t          ¦  «        sdS |                      ¦   «         r$|                     ¦   «         r| j        |j        k    S |                      ¦   «         s"|                     ¦   «         s| j        |j        u S dS )NF)r   r
   Úis_positionalr   )r   r   s     r   Ú__eq__zDimEntry.__eq__!   sŽ   € Ý˜%¥Ñ*Ô*ð 	Ø�5ð ×ÒÑÔð 	 E×$7Ò$7Ñ$9Ô$9ð 	à”9 ¤
Ò*Ð*Ø×#Ò#Ñ%Ô%ð 	¨e×.AÒ.AÑ.CÔ.Cð 	à”9 ¤
Ð*Ð*ð �5r   c                óN   — t          | j        ¦  «        t          u o
| j        dk     S )Nr   )r   r   r   ©r   s    r   r   zDimEntry.is_positional0   s    € Ý�D”I‰Œ¥#Ð%Ð7¨$¬)°aª-Ð7r   c                óR   — ddl m} t          | j        |¦  «        rdS | j        dk    S )Nr   r   Fr   )r   r   r   r   )r   r   s     r   Úis_nonezDimEntry.is_none3   s;   € àÐÐÐÐÐå�d”i Ñ%Ô%ð 	"à�5ð ”9 ’>Ð!r   r   c                óŒ   — t          | j        t          ¦  «        s$t          dt	          | j        ¦  «        › �¦  «        ‚| j        S )NzExpected int, got )r   r   r   r   r   r    s    r   ÚpositionzDimEntry.position>   s>   € Ý˜$œ)¥SÑ)Ô)ð 	IÝ Ð!Gµd¸4¼9±o´oÐ!GÐ!GÑHÔHÐHØŒyÐr   r   c                ób   — t          | j        t          ¦  «        rt          d¦  «        ‚| j        S )NzExpected Dim, got int)r   r   r   r   r    s    r   ÚdimzDimEntry.dimC   s-   € Ý�d”i¥Ñ%Ô%ð 	:Ý Ð!8Ñ9Ô9Ð9ØŒyÐr   Ústrc                ó*   — t          | j        ¦  «        S ©N)Úreprr   r    s    r   Ú__repr__zDimEntry.__repr__H   s   € Ý�D”I‰ŒÐr   r)   )r   r   r   r   )r   r   r   r   )r   r   )r   r   )r   r   )r   r'   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r   r   r   r"   r$   r&   r+   © r   r   r
   r
      s°   € € € € € € à€O€O�Oðð ð ð ð ðð ð ð ð8ð 8ð 8ð 8ð	"ð 	"ð 	"ð 	"ðð ð ð ð
ð ð ð ð
ð ð ð ð ð r   r
   ÚlevelsúSequence[DimEntry]r   r   c                óF   — d}| D ]}|                      ¦   «         r|dz  }Œ|S )Nr   r   )r   )r1   ÚrÚls      r   Úndim_of_levelsr6   L   s7   € Ø	€AØð ð ˆØ�?Š?ÑÔð 	Ø�‰FˆAøØ€Hr   FÚtensorútorch.TensorÚfrom_levelsúlist[DimEntry]Ú	to_levelsÚdrop_levelsr   c                ó¶  — ||k    r| S |                       ¦   «         }|                      ¦   «         }|s/t          |¦  «        t          |¦  «        k    rt          d¦  «        ‚g }g }|D ]É}	 |                     |¦  «        }	|                     ||	         ¦  «         |                     ||	         ¦  «         ŒO# t          $ rn |                     ¦   «         r|                     d¦  «         n,|                     |                     ¦   «         j         ¦  «         |                     d¦  «         Y ŒÆw xY w|  	                    |||  
                    ¦   «         ¦  «        S )aF  
    Reshape a tensor to match target levels using as_strided.

    Args:
        tensor: Input tensor to reshape
        from_levels: Current levels of the tensor
        to_levels: Target levels to match
        drop_levels: If True, missing dimensions are assumed to have stride 0

    Returns:
        Reshaped tensor
    z,Cannot expand dimensions without drop_levelsr   r   )ÚsizeÚstrideÚlenr   ÚindexÚappendÚ
ValueErrorr   r&   Ú
as_stridedÚstorage_offset)
r7   r9   r;   r<   ÚsizesÚstridesÚ	new_sizesÚnew_stridesÚlevelÚidxs
             r   Ú_match_levelsrL   T   sl  € ð$ �iÒÐØˆà�KŠK‰MŒM€EØ�mŠm‰oŒo€Gàð QÝˆ{ÑÔ�c )™nœnÒ,Ð,Ý Ð!OÑPÔPÐPà€IØ€Kàð -ð -ˆð	-Ø×#Ò# EÑ*Ô*ˆCð ×Ò˜U 3œZÑ(Ô(Ð(Ø×Ò˜w sœ|Ñ,Ô,Ð,Ð,øõ ð 	"ð 	"ð 	"à×"Ò"Ñ$Ô$ð 3Ø× Ò  Ñ#Ô#Ð#Ð#à× Ò  §¢¡¤Ô!1Ñ2Ô2Ð2Ø×Ò˜qÑ!Ô!Ð!Ð!Ð!ð	"øøøð ×Ò˜Y¨°V×5JÒ5JÑ5LÔ5LÑMÔMÐMs   Á+B7Â7A5D/Ä.D/)r1   r2   r   r   )F)
r7   r8   r9   r:   r;   r:   r<   r   r   r8   )Ú
__future__r   Útypingr   Úcollections.abcr   r   r   Útorchr
   r6   rL   r0   r   r   ú<module>rQ      sÌ   ðØ "Ð "Ð "Ð "Ð "Ð "à  Ð  Ð  Ð  Ð  Ð  ð ð Ø(Ð(Ð(Ð(Ð(Ð(àÐÐÐÐÐà €€€ð
9ð 9ð 9ð 9ð 9ñ 9ô 9ð 9ðxð ð ð ð ð	.Nð .Nð .Nð .Nð .Nð .Nð .Nr   