Ë
    [^(hÉ  ã                   óR   — d Z ddlmZ  G d„ d«      Z G d„ dej                  «      Zy)z3Functionality for Python <-> C++ frontend inter-op.é    )Únnc                   óP   — e Zd ZdZd„ Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zy)ÚOrderedDictWrappera¥  A wrapper around a C++ OrderedDict.

    It dynamically evaluates the OrderedDict getter on a bound C++ module, such
    that new changes on the C++ side are picked up. Otherwise accessing e.g.
    ``cpp_module._parameters`` just once would get a frozen copy of the parameters
    at the time of access. ``torch.nn.Module`` accesses ``_parameters`` et al. via ``self.__dict__``
    so using properties does not work.
    c                 ó    — || _         || _        y ©N)Ú
cpp_moduleÚattr)Úselfr   r	   s      úJ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/nn/cpp.pyÚ__init__zOrderedDictWrapper.__init__   s   € Ø$ˆŒØˆ�	ó    c                 óB   — t        | j                  | j                  «      S r   )Úgetattrr   r	   ©r
   s    r   Úcpp_dictzOrderedDictWrapper.cpp_dict   s   € ä�t—‘¨¯	©	Ó2Ð2r   c                 ó6   — | j                   j                  «       S r   )r   Úitemsr   s    r   r   zOrderedDictWrapper.items   s   € Ø�}‰}×"Ñ"Ó$Ð$r   c                 ó6   — | j                   j                  «       S r   )r   Úkeysr   s    r   r   zOrderedDictWrapper.keys   s   € Ø�}‰}×!Ñ!Ó#Ð#r   c                 ó6   — | j                   j                  «       S r   )r   Úvaluesr   s    r   r   zOrderedDictWrapper.values"   s   € Ø�}‰}×#Ñ#Ó%Ð%r   c                 ó6   — | j                   j                  «       S r   )r   Ú__iter__r   s    r   r   zOrderedDictWrapper.__iter__%   s   € Ø�}‰}×%Ñ%Ó'Ð'r   c                 ó6   — | j                   j                  «       S r   )r   Ú__len__r   s    r   r   zOrderedDictWrapper.__len__(   s   € Ø�}‰}×$Ñ$Ó&Ð&r   c                 ó8   — | j                   j                  |«      S r   )r   Ú__contains__©r
   Úkeys     r   r   zOrderedDictWrapper.__contains__+   s   € Ø�}‰}×)Ñ)¨#Ó.Ð.r   c                 ó8   — | j                   j                  |«      S r   )r   Ú__getitem__r   s     r   r!   zOrderedDictWrapper.__getitem__.   s   € Ø�}‰}×(Ñ(¨Ó-Ð-r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r   r   r   r   r   r   r!   © r   r   r   r      sC   „ ñòð ñ3ó ð3ò%ò$ò&ò(ò'ò/ó.r   r   c                   ód   ‡ — e Zd ZdZˆ fd„Zdd„Zed„ «       Zej                  d„ «       Zd„ Z	ˆ xZ
S )ÚModuleWrapperz\A subclass of ``torch.nn.Module`` that wraps a C++ frontend module and delegates all access.c           	      ó  •— || _         t        ‰| �	  «        t        |d«      | _        t        |d«      | _        t        |d«      | _        t        |«      D ]5  }|j                  d«      rŒt        | |t        | j                   |«      «       Œ7 y )NÚ_parametersÚ_buffersÚ_modulesÚ_)r   Úsuperr   r   r+   r,   r-   ÚdirÚ
startswithÚsetattrr   )r
   r   r	   Ú	__class__s      €r   r   zModuleWrapper.__init__5   sz   ø€ ð %ˆŒÜ‰ÑÔÜ-¨j¸-ÓHˆÔÜ,>¸zÈ:Ó,VˆŒÜ,>¸zÈ:Ó,VˆŒÜ˜
“Oò 	DˆDà—?‘? 3Õ'Ü˜˜d¤G¨D¯O©O¸TÓ$BÕCñ	Dr   c                 ó&  — | j                  «       D ]Q  } ||j                  «      |_        |j                  €Œ' ||j                  j                  «      |j                  _        ŒS | j                  «       D ]  } ||j                  «      |_        Œ | S r   )Ú
parametersÚdataÚ_gradÚbuffers)r
   ÚfnÚrecurseÚparamÚbufs        r   Ú_applyzModuleWrapper._applyB   s{   € Ø—_‘_Ó&ò 	8ˆEñ ˜EŸJ™J›ˆEŒJØ�{‰{Ñ&Ù#% e§k¡k×&6Ñ&6Ó#7�—‘Õ ð	8ð —<‘<“>ò 	$ˆCÙ˜#Ÿ(™(“|ˆC�Hð	$ð ˆr   c                 ó.   — | j                   j                  S r   )r   Útrainingr   s    r   r?   zModuleWrapper.trainingP   s   € à�‰×'Ñ'Ð'r   c                 ó:   — | j                   j                  |«       y r   )r   Útrain)r
   Úmodes     r   r?   zModuleWrapper.trainingT   s   € à�‰×Ñ˜dÕ#r   c                 ó6   — | j                   j                  «       S r   )r   Ú__repr__r   s    r   rD   zModuleWrapper.__repr__X   s   € Ø�‰×'Ñ'Ó)Ð)r   )T)r"   r#   r$   r%   r   r=   r&   r?   ÚsetterrD   Ú__classcell__)r3   s   @r   r)   r)   2   sB   ø„ ÙfôDóð ñ(ó ð(ð ‡_�_ñ$ó ð$ö*r   r)   N)r%   Útorchr   r   ÚModuler)   r'   r   r   ú<module>rI      s&   ðá 9å ÷(.ñ (.ôV'*�B—I‘Iõ '*r   