ó
    Eñiœ  ã                   óZ   • S SK Jr   S rS rS rS rS rS rS rS	 r	S
 r
S rS rS rg)é    )ÚOrderedDictc                 óD   • U R                  5       (       a  [        S5      eg )NzzNYI: Named tensors don't support serialization. Please drop names via `tensor = tensor.rename(None)` before serialization.)Ú	has_namesÚRuntimeError)Útensors    ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_namedtensor_internals.pyÚcheck_serializing_named_tensorr	      s)   € Ø×Ñ×ÑÜðMó
ð 	
ð ó    c                 ó‚   • [        [        U R                  5       VVs/ s H  u  pUc  UOUU4PM     snn5      $ s  snnf )zgReturns a map of { dim: dim_name } where dim is a name if the dim is named
and the dim index otherwise.)r   Ú	enumerateÚnames)r   ÚidxÚnames      r   Úbuild_dim_mapr      s>   € ô Ü@IÈ&Ï,É,Ô@WÔXÒ@W±9°3�‘‰# 4¨Ó	.Ñ@WÒXóð ùÛXs   ž;
c                 ó
  • [        U [        5      (       a  U R                  5       n [        U S5      (       d,  [        U [        5      (       d  [        S[        U 5       35      e[        U 5      S:X  a  [        S5      e[        U 6 $ )NÚ__iter__zBExpected namedshape to be OrderedDict or iterable of tuples, got: r   z!Expected namedshape to non-empty.)	Ú
isinstancer   ÚitemsÚhasattrÚtupler   ÚtypeÚlenÚzip)Ú
namedshapes    r   Úunzip_namedshaper      sz   € Ü�*œk×*Ñ*Ø×%Ñ%Ó'ˆ
Ü�:˜z×*Ñ*´:¸jÌ%×3PÑ3PÜØPÔQUÐV`ÓQaÐPbÐcó
ð 	
ô ˆ:ƒ˜!ÓÜÐ>Ó?Ð?Ü�
ÐÐr
   c                 ó   • U (       a  gg)NÚrename_Úrename© )Úinplaces    r   Únamer_api_namer!   (   s   € ÞØàr
   c                 ó,   • U [         :H  =(       d    U S:H  $ )Nz...)ÚEllipsis)Úitems    r   Úis_ellipsisr%   /   s   € Ø”8Ñ×,˜t u™}Ð,r
   c                 óÚ   • [        U 5       VVs/ s H  u  p#[        U5      (       d  M  UPM     nnn[        U5      S:¼  a  [        U SU  S35      e[        U5      S:X  a  US   $ g s  snnf )Né   z1: More than one Ellipsis ('...') found in names (z-). This function supports up to one Ellipsis.é   r   )r   r%   r   r   )r   Úfn_nameÚir   Úellipsis_indicess        r   Úsingle_ellipsis_indexr,   3   s|   € Ü)2°5Ô)9ÔOÒ)9™g˜a¼[È×=NŸÑ)9ÐÑOÜ
ÐÓ Ó!ÜØˆiÐHØˆgÐBðDó
ð 	
ô ÐÓ Ó!Ø Ñ"Ð"Øùó Ps
   �A'©A'c                 ó"   • X [        U5      U-
   $ )N)r   )Únumel_pre_globÚnumel_post_globr   s      r   Úexpand_single_ellipsisr0   ?   s   € Ø¤# e£*¨Ñ">Ð?Ð?r
   c                 óZ   • [        U [        U5      U -
  S-
  U5      nUS U  U-   XS-   S  -   $ )Nr(   )r0   r   )Úellipsis_idxr   Útensor_namesÚglobbed_namess       r   Úreplace_ellipsis_by_positionr5   C   sE   € Ü*Ø”c˜%“j <Ñ/°!Ñ3°\ó€Mð ��,Ð -Ñ/°%ÀqÑ8HÐ8JÐ2KÑKÐKr
   c                 ó:   • [        X5      nUc  U $ [        X0U5      $ )zP
Expands ... inside `names` to be equal to a list of names from `tensor_names`.
)r,   r5   )r   r3   r)   r2   s       r   Úresolve_ellipsisr7   J   s&   € ô )¨Ó8€LØÑØˆÜ'¨¸\ÓJÐJr
   c           	      ó®   • [        U5      S:X  a  US   c  U R                  S U5      $ U R                  [        XR                  [	        U5      5      U5      $ )Nr(   r   )r   Ú_update_namesr7   r   r!   )r   r   r    s      r   Úupdate_names_with_listr:   T   sQ   € ä
ˆ5ƒz�Qƒ˜5 ™8Ñ+Ø×#Ñ# D¨'Ó2Ð2à×ÑÜ˜§¡¬n¸WÓ.EÓFÈóð r
   c                 óð   • [        U 5      nU H=  nX   nXC;   a  XSU'   M  [        [        U5       SU SU SU R                   SU S3
5      e   U R	                  [        UR                  5       5      U5      $ )Nz: Tried to rename dim 'z	' to dim z in Tensor[z] but dim 'z' does not exist)r   r   r!   r   r9   r   Úvalues)r   Ú
rename_mapr    Údim_mapÚold_dimÚnew_dims         r   Úupdate_names_with_mappingrA   ^   sŒ   € Ü˜FÓ#€GÛˆØÑ%ˆØÓØ&�GÓäÜ! 'Ó*Ð+Ð+BÀ7À)È9Ø�)˜; v§|¡| n°KÀ¸yÐHXðZóð ñ ð ×Ñ¤ g§n¡nÓ&6Ó 7¸ÓAÐAr
   c           	      ó   • [        U5      S:„  n[        U5      nU(       a6  U(       a/  [        [        U5       S[        U5       S[        U5       S35      eU(       d  U(       d  [	        XU5      $ U(       a  [	        XU5      $ [        XU5      $ )aŠ  There are two usages:

tensor.rename(*names) returns a view on tensor with named dims `names`.
`names` must be of length `tensor.dim()`; otherwise, if '...' is in `names`,
then it is expanded greedily to be equal to the corresponding names from
`tensor.names`.

For example,
```
>>> # xdoctest: +SKIP
>>> x = torch.empty(2, 3, 5, 7, names=('N', 'C', 'H', 'W'))
>>> x.rename('...', 'height', 'width').names
('N', 'C', 'height', 'width')

>>> # xdoctest: +SKIP
>>> x.rename('batch', '...', 'width').names
('batch', 'C', 'H', 'width')

```

tensor.rename(**rename_map) returns a view on tensor that has rename dims
    as specified in the mapping `rename_map`.

For example,
```
>>> # xdoctest: +SKIP
>>> x = torch.empty(2, 3, 5, 7, names=('N', 'C', 'H', 'W'))
>>> x.rename(W='width', H='height').names
('N', 'C', 'height', 'width')

```

Finally, tensor.rename has an in-place version called tensor.rename_.
r   zW: This function takes either positional args or keyword args, but not both. Use tensor.z!(*names) to name dims and tensor.z(**rename_map) to rename dims.)r   Úboolr   r!   r:   rA   )r   r   r=   r    r   Úhas_rename_pairss         r   Úupdate_namesrE   l   s™   € ôF �E“
˜Q‘€IÜ˜JÓ'ÐÞÖ%ÜÜ˜gÓ&Ð'ð (>Ü>LÈWÓ>UÐ=Vð W'Ü'5°gÓ'>Ð&?ð @ðó
ð 	
ö Ö-Ü% f°WÓ=Ð=æÜ% f°WÓ=Ð=Ü$ V¸ÓAÐAr
   N)Úcollectionsr   r	   r   r   r!   r%   r,   r0   r5   r7   r:   rA   rE   r   r
   r   Ú<module>rG      sN   ðå #ðò
òò	òò-ò	ò@òLòKòòBó3Br
   