§
    ž²Åj®  ã                   óš   — d dl Z d dlZd dlmZ d dlmZ ddlmZ g Ze G d„ d¦  «        ¦   «         Z	 G d„ d	¦  «        Z
d
„ Zi Zdd„Zd„ ZdS )é    N)Ú	dataclass)ÚUnioné   )ÚDimListc                   ó(   — 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© ó    úBC:\Projects\Historical\venv\Lib\site-packages\functorch/dim/dim.pyr   r      s+   € € € € € € à€J€J�JØ€Eˆ4ÐÐÑÐÐr   r   c                   óŽ   — e Zd Zd
dededef         fd„Zd„ Zed„ ¦   «         Z	e	j
        defd„¦   «         Z	ed„ ¦   «         Zd	„ ZdS )ÚDimNÚnameÚsizec                 óF   — || _         d | _        d | _        |�	|| _        d S d S ©N)r   Ú_sizeÚ_vmap_levelr   )Úselfr   r   s      r   Ú__init__zDim.__init__   s1   € ØˆŒ	ØˆŒ
ØˆÔØÐØˆDŒIˆIˆIð Ðr   c                 óp  — | j         �¨dt          | j                 _        t          d         j        s�t          ¦   «         t          d         j        k    rct          ¦   «          t                               ¦   «          t          d         j        s(t          ¦   «         t          d         j        k    °[d S d S d S d S d S )NFéÿÿÿÿ)	r   Ú_vmap_active_levelsÚ_vmap_stackr
   Ú_vmap_levelsÚcurrent_levelr	   Ú_vmap_decrement_nestingÚpop©r   s    r   Ú__del__zDim.__del__   s²   € ØÔÐ'Ø:?Õ Ô 0Ô1Ô7å  Ô$Ô*ð#Ý/<©¬Å,ÈrÔBRÔBXÒ/XÐ/Xå'Ñ)Ô)Ð)Ý× Ò Ñ"Ô"Ð"õ ! Ô$Ô*ð#Ý/<©¬Å,ÈrÔBRÔBXÒ/XÐ/XÐ/XÐ/Xð (Ð'ð#ð #ð #ð #Ø/XÐ/Xr   c                 ó"   — | j         sJ ‚| j        S r   )Úis_boundr   r&   s    r   r   zDim.size(   s   € àŒ}ÐÐˆ}ØŒzÐr   c                 ó.  — ddl m} | j        €c|| _        t          |d¦  «        | _        t          t          ¦  «        | _        t                               t          | j        ¦  «        ¦  «         d S | j        |k    r |d| › d| j        › d|› �¦  «        ‚d S )Nr   )ÚDimensionBindErrorÚsamezDim 'z*' previously bound to a dimension of size z$ cannot bind to a dimension of size )
Ú r+   r   Ú_vmap_increment_nestingr   Úlenr"   r!   Úappendr   )r   r   r+   s      r   r   zDim.size-   s²   € à(Ð(Ð(Ð(Ð(Ð(àŒ:ÐØˆDŒJÝ6°t¸VÑDÔDˆDÔÝ"¥<Ñ0Ô0ˆDÔÝ×Ò¥	¨$Ô*:Ñ ;Ô ;Ñ<Ô<Ð<Ð<Ð<àŒZ˜4ÒÐØ$Ð$Ø~˜Ð~Ð~ÈÌ
Ð~Ð~Ðx|Ð~Ð~ñô ð ð  Ðr   c                 ó   — | j         d uS r   )r   r&   s    r   r)   zDim.is_bound<   s   € àŒz Ð%Ð%r   c                 ó   — | j         S r   ©r   r&   s    r   Ú__repr__zDim.__repr__@   s
   € ØŒyÐr   r   )r   r   r   Ústrr   r   r   r'   Úpropertyr   Úsetterr)   r4   r   r   r   r   r      sÁ   € € € € € ðð ˜Sð ¨¨d°C¨iÔ(8ð ð ð ð ð#ð #ð #ð ðð ñ „Xðð 
„[ð˜ð ð ð ñ „[ðð ð&ð &ñ „Xð&ðð ð ð ð r   r   c                 ó@   — | j         dk    s| j         dk    sJ ‚| j        S )NÚ
STORE_FASTÚ
STORE_NAME)ÚopnameÚargval)Úinsts    r   Úextract_namer>   D   s)   € ØŒ;˜,Ò&Ð&¨$¬+¸Ò*EÐ*EÐ*EÐEØŒ;Ðr   c                 óV  ‡‡	‡
‡‡‡— t          j        ¦   «         }|€J ‚|j        }|€J ‚|j        |j        }}||f}|t
          vrÓ|dz  dz   Š	t          t          j        |j        ¦  «        ¦  «        Š‰‰	         }|j	        dk    s|j	        dk    r*|j
        Š| dk    rt          nt          Šˆˆfd„t
          |<   n]|j	        dk    sJ ‚|j
        }t          ˆ	ˆfd„t          |¦  «        D ¦   «         ¦  «        Št          ‰¦  «        | z
  Š
ˆ
ˆfd	„t
          |<   t          |         ¦   «         S )
Né   r   r9   r:   r   c                  ó   •—  ‰ ‰¬¦  «        S )Nr3   r   )Úctorr   s   €€r   ú<lambda>zdims.<locals>.<lambda>\   s   ø€  $ $¨D /¡/¤/€ r   ÚUNPACK_SEQUENCEc              3   óN   •K  — | ]}t          ‰‰d z   |z            ¦  «        V — Œ dS )r   N)r>   )Ú.0ÚiÚfirstÚinstructionss     €€r   ú	<genexpr>zdims.<locals>.<genexpr>`   sI   øè è € ð ð Ø>?•˜\¨%°!©)°a©-Ô8Ñ9Ô9ðð ð ð ð ð r   c                  óT   •— t          ˆ fd„t          ‰¦  «        D ¦   «         ¦  «        S )Nc              3   óh   •K  — | ],\  }}|‰k     rt          |¦  «        nt          |¬ ¦  «        V — Œ-dS )r3   N)r   r   )rF   rG   ÚnÚ
first_lists      €r   rJ   z)dims.<locals>.<lambda>.<locals>.<genexpr>d   sU   øè è € ð (ð (á�A�qð ˜jš.˜.•�A‘”�­g¸1¨o©o¬oð(ð (ð (ð (ð (ð (r   )ÚtupleÚ	enumerate)rN   Únamess   €€r   rC   zdims.<locals>.<lambda>d   s?   ø€ ¥%ð (ð (ð (ð (å% eÑ,Ô,ð(ñ (ô (ñ #ô #€ r   )ÚinspectÚcurrentframeÚf_backÚf_codeÚf_lastiÚ_cacheÚlistÚdisÚget_instructionsr;   r<   r   r   rO   Úranger/   )ÚlistsÚframeÚcalling_frameÚcodeÚlastiÚkeyÚunpackÚndimsrB   rH   rN   rI   r   rQ   s           @@@@@@r   Údimsrd   L   sn  øøøøøø€ ÝÔ Ñ"Ô"€EØÐÐÐØ”L€MØÐ$Ð$Ð$ØÔ&¨Ô(=ˆ%€DØ�ˆ-€CØ
•&ÐÐØ˜‘
˜Q‘ˆÝ�CÔ0°Ô1EÑFÔFÑGÔGˆØ˜eÔ$ˆàŒ=˜LÒ(Ð(¨F¬M¸\Ò,IÐ,Ià”=ˆDØ 1š*˜*•3�3­'ˆDØ1Ð1Ð1Ð1Ð1�F�3‰KˆKà”=Ð$5Ò5Ð5Ð5Ð5Ø”MˆEÝð ð ð ð ð ÝCHÈÁ<Ä<ðñ ô ñ ô ˆEõ ˜U™œ eÑ+ˆJðð ð ð ð �F�3‰Kõ �#Œ;‰=Œ=Ðr   c                 óž   ‡ ‡— ˆ fd„Š|€‰ S t          |t          t          f¦  «        st          ˆfd„|D ¦   «         ¦  «        S  ‰|¦  «        fS )Nc                 óp   •— t          | t          ¦  «        r| S t          | t          ¦  «        sJ ‚‰|          S r   )Ú
isinstancer   r   )ÚaÚ
positionals    €r   Úconvertz_dim_set.<locals>.convertl   s:   ø€ Ý�a�ÑÔð 	!ØˆHå˜a¥Ñ%Ô%Ð%Ð%Ð%Ø˜a”=Ð r   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r   r   )rF   rh   rj   s     €r   rJ   z_dim_set.<locals>.<genexpr>v   s+   øè è € Ð-Ð- A�W�W˜Q‘Z”ZÐ-Ð-Ð-Ð-Ð-Ð-r   )rg   r   r   rO   )ri   Úargrj   s   ` @r   Ú_dim_setrm   k   ss   øø€ ð!ð !ð !ð !ð !ð €{ØÐÝ˜�c¥3˜ZÑ(Ô(ð ÝÐ-Ð-Ð-Ð-¨Ð-Ñ-Ô-Ñ-Ô-Ð-à�˜‘”ˆÐr   )r   )rY   rR   Údataclassesr   Útypingr   r-   r   r"   r   r   r>   rW   rd   rm   r   r   r   ú<module>rp      sö   ðð €
€
€
Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð ð €ð ðð ð ð ð ñ ô ñ „ðð
*ð *ð *ð *ð *ñ *ô *ð *ðZð ð ð
 
€ðð ð ð ð>ð ð ð ð r   