ó
    È…†i*  ã                  óŽ   • S SK Jr  S SKJrJr  \(       a  S SKJr  SSKJr  S SK	r	 " S S5      r
SS	 jr S         SS
 jjrg)é    )Úannotations)ÚTYPE_CHECKINGÚUnion)ÚSequenceé   ©ÚDimNc                  ój   • \ rS rSr% S\S'   SSS jjrSS jrSS jrSS jrSS	 jr	SS
 jr
SS jrSrg)ÚDimEntryé   zUnion[Dim, int]ÚdataNc                ó‚   • SSK Jn  [        U5      [        L a	  US:  d   eOUc  SnO[	        X5      (       d   eXl        g )Nr   r   r   )Ú r	   ÚtypeÚintÚ
isinstancer   )Úselfr   r	   s      ÚR/home/james-whalen/.local/lib/python3.13/site-packages/functorch/dim/_dim_entry.pyÚ__init__ÚDimEntry.__init__   s<   € Ýä‹:œÒØ˜!“8ˆO‘8Ø‰\Ø‰Dä˜d×(Ñ(Ð(Ð(Ø	ó    c                ó:  • [        U[        5      (       d  gU R                  5       (       a.  UR                  5       (       a  U R                  UR                  :H  $ U R                  5       (       d-  UR                  5       (       d  U R                  UR                  L $ g)NF)r   r   Úis_positionalr   )r   Úothers     r   Ú__eq__ÚDimEntry.__eq__   sy   € Ü˜%¤×*Ñ*Øð ×Ñ×Ñ E×$7Ñ$7×$9Ñ$9à—9‘9 §
¡
Ñ*Ð*Ø×#Ñ#×%Ñ%¨e×.AÑ.A×.CÑ.Cà—9‘9 §
¡
Ð*Ð*ð r   c                ód   • [        U R                  5      [        L =(       a    U R                  S:  $ )Nr   )r   r   r   ©r   s    r   r   ÚDimEntry.is_positional.   s"   € ÜD—I‘I‹¤#Ð%×7¨$¯)©)°a©-Ð7r   c                ód   • SSK Jn  [        U R                  U5      (       a  gU R                  S:H  $ )Nr   r   Fr   )r   r	   r   r   )r   r	   s     r   Úis_noneÚDimEntry.is_none1   s)   € åäd—i‘i ×%Ñ%àð —9‘9 ‘>Ð!r   c                ó\   • [        U R                  [        5      (       d   eU R                  $ ©N©r   r   r   r   s    r   ÚpositionÚDimEntry.position<   s#   € Ü˜$Ÿ)™)¤S×)Ñ)Ð)Ð)Øy‰yÐr   c                ó\   • [        U R                  [        5      (       a   eU R                  $ r$   r%   r   s    r   ÚdimÚDimEntry.dim@   s#   € Ü˜dŸi™i¬×-Ñ-Ð-Ð-Øy‰yÐr   c                ó,   • [        U R                  5      $ r$   )Úreprr   r   s    r   Ú__repr__ÚDimEntry.__repr__D   s   € ÜD—I‘I‹Ðr   )r   r$   )r   zUnion[Dim, int, None]ÚreturnÚNone)r   Úobjectr/   Úbool)r/   r2   )r/   r   )r/   r	   )r/   Ústr)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r   r   r   r!   r&   r)   r-   Ú__static_attributes__© r   r   r   r      s+   ‡ à
Óö	ôô8ô	"ôô÷r   r   c                óT   • SnU  H  nUR                  5       (       d  M  US-  nM!     U$ )Nr   r   )r   )ÚlevelsÚrÚls      r   Úndim_of_levelsr?   H   s.   € Ø	€AÛˆØ?‰?×ÓØ‰FŠAñ ð €Hr   c                óJ  • X:X  a  U $ U R                  5       nU R                  5       nU(       d  [        U5      [        U5      ::  d   S5       e/ n/ nU H;  n UR                  U5      n	UR	                  XI   5        UR	                  XY   5        M=     U R                  XgU R                  5       5      $ ! [
         ae    UR                  5       (       a  UR	                  S5        O)UR	                  UR                  5       R                   5        UR	                  S5         MÍ  f = f)a"  
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ÚlenÚindexÚappendÚ
ValueErrorr   r)   Ú
as_stridedÚstorage_offset)
ÚtensorÚfrom_levelsÚ	to_levelsÚdrop_levelsÚsizesÚstridesÚ	new_sizesÚnew_stridesÚlevelÚidxs
             r   Ú_match_levelsrS   P   s
  € ð$ ÓØˆàK‰K‹M€EØm‰m‹o€GæÜ;Ó¤3 y£>Ó1ð 	
Ø:ó	
Ð1ð €IØ€Kãˆð	-Ø×#Ñ# EÓ*ˆCð ×Ñ˜U™ZÔ(Ø×Ñ˜w™|Ö,ñ ð ×Ñ˜Y°V×5JÑ5JÓ5LÓMÐMøô ó 	"à×"Ñ"×$Ñ$Ø× Ñ  Õ#à× Ñ  §¡£×!1Ñ!1Ô2Ø×Ñ˜q×!ð	"ús   ÁB3Â3A+D"Ä!D")r<   zSequence[DimEntry]r/   r   )F)
rI   útorch.TensorrJ   úlist[DimEntry]rK   rU   rL   r2   r/   rT   )Ú
__future__r   Útypingr   r   Úcollections.abcr   r   r	   Útorchr   r?   rS   r:   r   r   Ú<module>rZ      sg   ðÝ "ç 'ö Ý(åã ÷
5ñ 5ôpð ð	/NØð/Nàð/Nð ð/Nð ð	/Nð
 ö/Nr   