§
    Ì²Åjš,  ã                  óì   — d dl mZ d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ eZg d¢Z G d„ d	ej        ¦  «        Z G d
„ dej        ¦  «        Z G d„ de¦  «        ZeZ G d„ d¦  «        ZdS )é    )ÚannotationsN)Úref)Ú_IterationGuard)ÚMutableMappingÚMapping)ÚTensor)ÚTensorWeakRefÚ	WeakIdRefÚWeakIdKeyDictionaryÚWeakTensorKeyDictionaryc                  ó<   ‡ — e Zd ZdgZdˆ fd„	Zˆ fd„Zd„ Zd„ Zˆ xZS )r
   Ú_idNc                ót   •— t          |¦  «        | _        t          ¦   «                              ||¦  «         d S ©N)Úidr   ÚsuperÚ__init__©ÚselfÚkeyÚcallbackÚ	__class__s      €úAC:\Projects\Historical\venv\Lib\site-packages\torch/utils/weak.pyr   zWeakIdRef.__init__.   s2   ø€ õ �c‘7”7ˆŒÝ‰Œ×Ò˜˜hÑ'Ô'Ð'Ð'Ð'ó    c                ó�   •— t          ¦   «                              ¦   «         }t          |d¦  «        r|                     ¦   «          |S ©NÚ_fix_weakref©r   Ú__call__Úhasattrr   ©r   Úrr   s     €r   r   zWeakIdRef.__call__7   ó?   ø€ Ý‰GŒG×ÒÑÔˆå�1�nÑ%Ô%ð 	Ø�NŠNÑÔÐØˆr   c                ó   — | j         S r   ©r   ©r   s    r   Ú__hash__zWeakIdRef.__hash__>   ó	   € ØŒxˆr   c                óB   —  | ¦   «         } |¦   «         }|�|�||u S | |u S r   © ©r   ÚotherÚaÚbs       r   Ú__eq__zWeakIdRef.__eq__A   s6   € ð ˆD‰FŒFˆØˆE‰GŒGˆØˆ=˜Q˜]Ø˜�6ˆMØ�uˆ}Ðr   r   ©	Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r   r'   r/   Ú__classcell__©r   s   @r   r
   r
   +   s{   ø€ € € € € Ø�€Ið(ð (ð (ð (ð (ð (ðð ð ð ð ðð ð ðð ð ð ð ð ð r   r
   c                  ó<   ‡ — e Zd ZdgZdˆ fd„	Zˆ fd„Zd„ Zd„ Zˆ xZS )Ú_WeakHashRefr   Nc                ót   •— t          |¦  «        | _        t          ¦   «                              ||¦  «         d S r   )Úhashr   r   r   r   s      €r   r   z_WeakHashRef.__init__Y   s2   ø€ õ ˜‘9”9ˆŒÝ‰Œ×Ò˜˜hÑ'Ô'Ð'Ð'Ð'r   c                ó�   •— t          ¦   «                              ¦   «         }t          |d¦  «        r|                     ¦   «          |S r   r   r!   s     €r   r   z_WeakHashRef.__call__b   r#   r   c                ó   — | j         S r   r%   r&   s    r   r'   z_WeakHashRef.__hash__i   r(   r   c                óz   —  | ¦   «         } |¦   «         }|�"|� t          |¦  «        t          |¦  «        k    S | |u S r   )r:   r+   s       r   r/   z_WeakHashRef.__eq__l   sD   € ð ˆD‰FŒFˆØˆE‰GŒGˆØˆ=˜Q˜]Ý˜‘7”7�d 1™gœgÒ%Ð%Ø�uˆ}Ðr   r   r0   r6   s   @r   r8   r8   V   s{   ø€ € € € € Ø�€Ið(ð (ð (ð (ð (ð (ðð ð ð ð ðð ð ðð ð ð ð ð ð r   r8   c                  ó²   — e Zd Zdefd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZeZd„ Zdd„Zd„ Zd„ Zd„ ZeZd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )r   Nc                óÈ   — i | _         || _        t          | ¦  «        fd„}|| _        g | _        t          ¦   «         | _        d| _        |�|                      |¦  «         d S d S )Nc                óœ   —  |¦   «         }|�?|j         r|j                             | ¦  «         d S 	 |j        | = d S # t          $ r Y d S w xY wd S r   )Ú
_iteratingÚ_pending_removalsÚappendÚdataÚKeyError)ÚkÚselfrefr   s      r   Úremovez,WeakIdKeyDictionary.__init__.<locals>.remove}   sv   € Ø�7‘9”9ˆDØÐØ”?ð ØÔ*×1Ò1°!Ñ4Ô4Ð4Ð4Ð4ðØ œI a˜L˜L˜LøÝ#ð ð ð Ø˜˜ðøøøð  Ðs   ±; »
A	ÁA	F)	rD   Úref_typer   Ú_removerB   ÚsetrA   Ú
_dirty_lenÚupdate)r   ÚdictrI   rH   s       r   r   zWeakIdKeyDictionary.__init__x   sv   € ØˆŒ	à ˆŒå! $™iœið 		ð 		ð 		ð 		ð ˆŒà!#ˆÔÝ™%œ%ˆŒØˆŒØÐØ�KŠK˜ÑÔÐÐÐð Ðr   c                ó�   — | j         j        }| j        }	 	  |¦   «         }n# t          $ r Y d S w xY w	 ||= n# t          $ r Y nw xY wŒ3r   )rB   ÚpoprD   Ú
IndexErrorrE   )r   rP   Údr   s       r   Ú_commit_removalsz$WeakIdKeyDictionary._commit_removals�   s‚   € ð
 Ô$Ô(ˆØŒIˆð		ðØ�c‘e”e��øÝð ð ð Ø��ðøøøðØ�c�F�FøÝð ð ð Ø�ðøøøð		s   –
! ¡
/®/³7 ·
AÁAc                óT   ‡— | j         Šˆfd„| j        D ¦   «         | _        d| _        d S )Nc                ó   •— g | ]}|‰v ¯|‘Œ	S r*   r*   )Ú.0rF   rR   s     €r   ú
<listcomp>z7WeakIdKeyDictionary._scrub_removals.<locals>.<listcomp>£   s   ø€ Ð!NÐ!NÐ!N¨ÀqÈAÀvÀv !ÀvÀvÀvr   F)rD   rB   rL   )r   rR   s    @r   Ú_scrub_removalsz#WeakIdKeyDictionary._scrub_removals¡   s4   ø€ ØŒIˆØ!NÐ!NÐ!NÐ!N¨TÔ-CÐ!NÑ!NÔ!NˆÔØˆŒˆˆr   c                óJ   — d| _         | j        |                      |¦  «        = d S ©NT)rL   rD   rI   ©r   r   s     r   Ú__delitem__zWeakIdKeyDictionary.__delitem__¦   s%   € ØˆŒØŒI�d—m’m CÑ(Ô(Ð)Ð)Ð)r   c                óB   — | j         |                      |¦  «                 S r   )rD   rI   r[   s     r   Ú__getitem__zWeakIdKeyDictionary.__getitem__ª   s   € ØŒy˜Ÿš sÑ+Ô+Ô,Ð,r   c                ó˜   — | j         r| j        r|                      ¦   «          t          | j        ¦  «        t          | j        ¦  «        z
  S r   )rL   rB   rX   ÚlenrD   r&   s    r   Ú__len__zWeakIdKeyDictionary.__len__­   sH   € ØŒ?ð 	#˜tÔ5ð 	#ð × Ò Ñ"Ô"Ð"Ý�4”9‰~Œ~¥ DÔ$:Ñ ;Ô ;Ñ;Ð;r   c                óD   — d| j         j        › dt          | ¦  «        d›d�S )Nú<z at z#xú>)r   r1   r   r&   s    r   Ú__repr__zWeakIdKeyDictionary.__repr__´   s)   € Ø>�4”>Ô*Ð>Ð>µ°4±´Ð>Ð>Ð>Ð>Ð>r   c                óL   — || j         |                      || j        ¦  «        <   d S r   )rD   rI   rJ   )r   r   Úvalues      r   Ú__setitem__zWeakIdKeyDictionary.__setitem__·   s$   € Ø6;ˆŒ	�$—-’-  T¤\Ñ2Ô2Ñ3Ð3Ð3r   c                óÒ   — t          ¦   «         }t          | ¦  «        5  | j                             ¦   «         D ]\  }} |¦   «         }|�|||<   Œ	 d d d ¦  «         n# 1 swxY w Y   |S r   )r   r   rD   Úitems)r   Únewr   rg   Úos        r   ÚcopyzWeakIdKeyDictionary.copyº   sµ   € Ý!Ñ#Ô#ˆÝ˜TÑ"Ô"ð 	#ð 	#Ø"œiŸošoÑ/Ô/ð #ð #‘
��UØ�C‘E”E�Ø�=Ø"�C˜‘Føð#ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð
 ˆ
s   ž1AÁA Á#A c                óþ   — ddl m} |                      ¦   «         }t          | ¦  «        5  | j                             ¦   «         D ] \  }} |¦   «         }|� |||¦  «        ||<   Œ!	 d d d ¦  «         n# 1 swxY w Y   |S )Nr   )Údeepcopy)rm   ro   r   r   rD   rj   )r   Úmemoro   rk   r   rg   rl   s          r   Ú__deepcopy__z WeakIdKeyDictionary.__deepcopy__Å   s×   € Ø!Ð!Ð!Ð!Ð!Ð!Ø�nŠnÑÔˆÝ˜TÑ"Ô"ð 	3ð 	3Ø"œiŸošoÑ/Ô/ð 3ð 3‘
��UØ�C‘E”E�Ø�=Ø%˜X e¨TÑ2Ô2�C˜‘Føð3ð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3ð
 ˆ
s   ª;A2Á2A6Á9A6c                ó^   — | j                              |                      |¦  «        |¦  «        S r   )rD   ÚgetrI   ©r   r   Údefaults      r   rs   zWeakIdKeyDictionary.getÏ   s$   € ØŒy�}Š}˜TŸ]š]¨3Ñ/Ô/°Ñ9Ô9Ð9r   c                ód   — 	 |                       |¦  «        }n# t          $ r Y dS w xY w|| j        v S )NF)rI   Ú	TypeErrorrD   )r   r   Úwrs      r   Ú__contains__z WeakIdKeyDictionary.__contains__Ò   sH   € ð	Ø—’˜sÑ#Ô#ˆBˆBøÝð 	ð 	ð 	Ø�5�5ð	øøøà�T”YˆÐs   ‚ ˜
&¥&c              #  ó¾   K  — t          | ¦  «        5  | j                             ¦   «         D ]\  }} |¦   «         }|�||fV — Œ	 d d d ¦  «         d S # 1 swxY w Y   d S r   ©r   rD   rj   )r   rx   rg   r   s       r   rj   zWeakIdKeyDictionary.itemsÙ   s½   è è € Ý˜TÑ"Ô"ð 	%ð 	%Ø!œYŸ_š_Ñ.Ô.ð %ð %‘	��EØ�b‘d”d�Ø�?Ø˜u˜*Ð$Ð$Ð$øð%ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s   ’2AÁAÁAc              #  ó�   K  — t          | ¦  «        5  | j        D ]} |¦   «         }|�|V — Œ	 d d d ¦  «         d S # 1 swxY w Y   d S r   )r   rD   )r   rx   Úobjs      r   ÚkeyszWeakIdKeyDictionary.keysà   s¨   è è € Ý˜TÑ"Ô"ð 	ð 	Ø”ið ð �Ø�b‘d”d�Ø�?Ø�I�I�Iøðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ’;»?Á?c              #  ó¶   K  — t          | ¦  «        5  | j                             ¦   «         D ]\  }} |¦   «         �|V — Œ	 d d d ¦  «         d S # 1 swxY w Y   d S r   r{   )r   rx   rg   s      r   ÚvalueszWeakIdKeyDictionary.valuesé   s²   è è € Ý˜TÑ"Ô"ð 	 ð 	 Ø!œYŸ_š_Ñ.Ô.ð  ð  ‘	��EØ�2‘4”4Ð#Ø�K�K�Køð ð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ’.AÁAÁAc                ó*   — t          | j        ¦  «        S )az  Return a list of weak references to the keys.

        The references are not guaranteed to be 'live' at the time
        they are used, so the result of calling the references needs
        to be checked before being used.  This can be used to avoid
        creating references that will cause the garbage collector to
        keep the keys around longer than needed.

        )ÚlistrD   r&   s    r   ÚkeyrefszWeakIdKeyDictionary.keyrefsï   s   € õ �D”I‰ŒÐr   c                ól   — d| _         	 | j                             ¦   «         \  }} |¦   «         }|�||fS Œ-rZ   )rL   rD   Úpopitem)r   r   rg   rl   s       r   r…   zWeakIdKeyDictionary.popitemû   sC   € ØˆŒð	 Øœ×*Ò*Ñ,Ô,‰JˆC�Ø�‘”ˆAØˆ}Ø˜%�x�ð		 r   c                ó\   — d| _          | j        j        |                      |¦  «        g|¢R Ž S rZ   )rL   rD   rP   rI   )r   r   Úargss      r   rP   zWeakIdKeyDictionary.pop  s1   € ØˆŒØˆtŒyŒ}˜TŸ]š]¨3Ñ/Ô/Ð7°$Ð7Ð7Ð7Ð7r   c                ój   — | j                              |                      || j        ¦  «        |¦  «        S r   )rD   Ú
setdefaultrI   rJ   rt   s      r   r‰   zWeakIdKeyDictionary.setdefault  s*   € ØŒy×#Ò# D§M¢M°#°t´|Ñ$DÔ$DÀgÑNÔNÐNr   c                ó$  — | j         }|�`t          |d¦  «        s t          i ¦  «        |¦  «        }|                     ¦   «         D ]#\  }}|||                      || j        ¦  «        <   Œ$t          |¦  «        r|                      |¦  «         d S d S )Nrj   )rD   r    Útyperj   rI   rJ   r`   rM   )r   rN   ÚkwargsrR   r   rg   s         r   rM   zWeakIdKeyDictionary.update
  sœ   € ØŒIˆØÐÝ˜4 Ñ)Ô)ð &Ø•t˜B‘x”x ‘~”~�Ø"Ÿjšj™lœlð <ð <‘
��UØ6;��$—-’-  T¤\Ñ2Ô2Ñ3Ð3Ýˆv‰;Œ;ð 	 Ø�KŠK˜ÑÔÐÐÐð	 ð 	 r   c                ó0   — |                       |¦  «         | S r   )rM   ©r   r,   s     r   Ú__ior__zWeakIdKeyDictionary.__ior__  s   € Ø�Š�EÑÔÐØˆr   c                óš   — t          |t          j        ¦  «        r+|                      ¦   «         }|                     |¦  «         |S t
          S r   )Ú
isinstanceÚ_collections_abcr   rm   rM   ÚNotImplemented©r   r,   Úcs      r   Ú__or__zWeakIdKeyDictionary.__or__  s?   € Ý�eÕ-Ô5Ñ6Ô6ð 	Ø—	’	‘”ˆAØ�HŠH�U‰OŒOˆOØˆHÝÐr   c                óÄ   — t          |t          j        ¦  «        r@|                      ¦   «         }|                     |¦  «         |                     | ¦  «         |S t
          S r   )r‘   r’   r   r   rM   r“   r”   s      r   Ú__ror__zWeakIdKeyDictionary.__ror__  sP   € Ý�eÕ-Ô5Ñ6Ô6ð 	Ø—’Ñ Ô ˆAØ�HŠH�U‰OŒOˆOØ�HŠH�T‰NŒNˆNØˆHÝÐr   c                ó¶   — t          |t          ¦  «        st          S d„ |                      ¦   «         D ¦   «         d„ |                     ¦   «         D ¦   «         k    S )Nc                ó4   — i | ]\  }}t          |¦  «        |“ŒS r*   ©r   ©rV   rF   Úvs      r   ú
<dictcomp>z.WeakIdKeyDictionary.__eq__.<locals>.<dictcomp>,  s$   € Ð2Ð2Ð2™T˜Q •�1‘”�qÐ2Ð2Ð2r   c                ó4   — i | ]\  }}t          |¦  «        |“ŒS r*   r›   rœ   s      r   rž   z.WeakIdKeyDictionary.__eq__.<locals>.<dictcomp>,  s$   € Ð6ZÐ6ZÐ6ZÁDÀAÀqµr¸!±u´u¸aÐ6ZÐ6ZÐ6Zr   )r‘   r   r“   rj   rŽ   s     r   r/   zWeakIdKeyDictionary.__eq__)  sR   € Ý˜%¥Ñ)Ô)ð 	"Ý!Ð!Ø2Ð2 T§Z¢Z¡\¤\Ð2Ñ2Ô2Ð6ZÐ6ZÈEÏKÊKÉMÌMÐ6ZÑ6ZÔ6ZÒZÐZr   r   )r1   r2   r3   r
   r   rS   rX   r\   r^   ra   re   rh   rm   Ú__copy__rq   rs   ry   rj   r~   Ú__iter__r€   rƒ   r…   rP   r‰   rM   r�   r–   r˜   r/   r*   r   r   r   r   w   s¬  € € € € € Ø ¨9ð ð ð ð ð.ð ð ð$ ð  ð  ð
*ð *ð *ð-ð -ð -ð<ð <ð <ð?ð ?ð ?ð<ð <ð <ðð ð ð €Hðð ð ð:ð :ð :ð :ðð ð ð%ð %ð %ðð ð ð €Hð ð  ð  ð
ð 
ð 
ð ð  ð  ð8ð 8ð 8ðOð Oð Oð Oð ð  ð  ð  ðð ð ðð ð ðð ð ð[ð [ð [ð [ð [r   r   c                  ó,   — e Zd ZU dZded<   d	d„Zd„ ZdS )
r	   zuWrapper around a weak ref of a Tensor that handles the _fix_weakref() call required when unwrapping a Tensor weakref.zWeakRef[Tensor]r   Útensorr   c                óf   — t          |t          ¦  «        sJ ‚t          j        |¦  «        | _        d S r   )r‘   r   Úweakrefr   )r   r£   s     r   r   zTensorWeakRef.__init__7  s-   € Ý˜&¥&Ñ)Ô)Ð)Ð)Ð)Ý”;˜vÑ&Ô&ˆŒˆˆr   c                óŒ   — |                       ¦   «         }|€|S t          |t          ¦  «        sJ ‚|                     ¦   «          |S r   )r   r‘   r   r   )r   Úouts     r   r   zTensorWeakRef.__call__;  sF   € Ø�hŠh‰jŒjˆØˆ;ØˆJÝ˜#�vÑ&Ô&Ð&Ð&Ð&à×ÒÑÔÐØˆ
r   N)r£   r   )r1   r2   r3   Ú__doc__Ú__annotations__r   r   r*   r   r   r	   r	   2  sK   € € € € € € ØÐàÐÐÑð'ð 'ð 'ð 'ðð ð ð ð r   r	   )Ú
__future__r   r¥   r   Ú_weakrefsetr   Úcollections.abcr   r   Útorchr   Úabcr’   ÚWeakRefÚ__all__r
   r8   r   r   r	   r*   r   r   ú<module>r±      sd  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð Ø *Ð *Ð *Ð *Ð *Ð *ð €ð [Ð
ZÐ
Z€ð8'ð 'ð 'ð 'ð '�”ñ 'ô 'ð 'ðVð ð ð ð �7”;ñ ô ð ðBu[ð u[ð u[ð u[ð u[˜.ñ u[ô u[ð u[ðp .Ð ðð ð ð ð ñ ô ð ð ð r   