Ë
    ›¾j²	  ã                   ó\   — d dl Z d dlZd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZ  G d„ d«      Zy)é    N)ÚPath)ÚAnyÚCallableÚDictÚOptionalÚTupleÚUnionc                   ól  — e Zd ZU dZdZeed<    ej                  «       Z	ej                  ed<   e
ed<   eed<   ee   ed<   dd	ed
efd„Zdedeeedef   f   fd„Zdedefd„Zdedeeedef   f   fd„Zd„ Zej,                  d„ «       Zd„ Zdedefd„Zdeeef   fd„Zdeeef   dd fd„Zd„ Zdd„Z y) ÚShimaZ  Define a basic interface for external models. Users can create subclasses
    of 'shim' to wrap external libraries. We provide shims for PyTorch.

    The Thinc Model class treats Shim objects as a sort of special type of
    sublayer: it knows they're not actual Thinc Model instances, but it also
    knows to talk to the shim instances when doing things like using transferring
    between devices, loading in parameters, optimization. It also knows Shim
    objects need to be serialized and deserialized with to/from bytes/disk,
    rather than expecting that they'll be msgpack-serializable.
    r   Ú	global_idÚglobal_id_lockÚcfgÚ_modelÚ
_optimizerNÚmodelÚ	optimizerc                 óî   — t         j                  5  t         xj                  dz  c_        t         j                  | _        d d d «       |�t	        |«      ni | _        || _        || _        y # 1 sw Y   Œ,xY w)Né   )r   r   r   ÚidÚdictr   r   r   )Úselfr   Úconfigr   s       úZ/home/spazio/kingdom_calls/work5/transenv/lib/python3.12/site-packages/thinc/shims/shim.pyÚ__init__zShim.__init__   s[   € Ü× Ñ ñ 	%Ü�NŠN˜aÑ�NÜ—n‘nˆDŒG÷	%ð $*Ð#5”4˜”<¸2ˆŒØˆŒØ#ˆ�÷	%ð 	%ús   ‘/A+Á+A4Úis_trainÚreturn.c                 ó   — t         ‚©N©ÚNotImplementedError)r   Úinputsr   s      r   Ú__call__zShim.__call__#   ó   € Ü!Ð!ó    Úfwd_argsc                 ó    —  | |d¬«      \  }}|S )NF©r   © )r   r%   ÚYÚbackprops       r   ÚpredictzShim.predict&   s   € Ù˜8¨eÔ4‰ˆˆ8Øˆr$   c                 ó   —  | |d¬«      S )NTr'   r(   )r   r%   s     r   Úbegin_updatezShim.begin_update*   s   € Ù�H tÔ,Ð,r$   c                 ó   — t         ‚r   r   )r   r   s     r   Úfinish_updatezShim.finish_update-   r#   r$   c              #   ó   K  — d –— y ­wr   r(   )r   Úparamss     r   Ú
use_paramszShim.use_params0   s	   è ø€ äùs   ‚c                 ó,   — t        j                  | «      S r   )ÚcopyÚdeepcopy©r   s    r   r4   z	Shim.copy4   s   € Ü�}‰}˜TÓ"Ð"r$   Údevice_typeÚ	device_idc                 ó   — t         ‚r   r   )r   r7   r8   s      r   Ú	to_devicezShim.to_device7   r#   r$   Úpathc                 óÌ   — | j                  «       }t        |t        «      rt        |«      n|}|j	                  d«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w)NÚwb)Úto_bytesÚ
isinstanceÚstrr   ÚopenÚwrite)r   r;   Ú
bytes_dataÚfile_s       r   Úto_diskzShim.to_disk:   sO   € Ø—]‘]“_ˆ
Ü'¨¬cÔ2Œt�DŒz¸ˆØ�Y‰Y�t‹_ð 	$ Ø�K‰K˜
Ô#÷	$÷ 	$ñ 	$ús   ¿AÁA#c                 óÊ   — t        |t        «      rt        |«      n|}|j                  d«      5 }|j	                  «       }d d d «       | j                  «      S # 1 sw Y   ŒxY w)NÚrb)r?   r@   r   rA   ÚreadÚ
from_bytes)r   r;   rD   rC   s       r   Ú	from_diskzShim.from_disk@   sR   € Ü'¨¬cÔ2Œt�DŒz¸ˆØ�Y‰Y�t‹_ð 	& ØŸ™›ˆJ÷	&à�‰˜zÓ*Ð*÷	&ð 	&ús   ¯AÁA"c                 ó   — t         ‚r   r   r6   s    r   r>   zShim.to_bytesF   r#   r$   c                 ó   — t         ‚r   r   )r   Údatas     r   rI   zShim.from_bytesI   r#   r$   )NN)r   r   )!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚintÚ__annotations__Ú	threadingÚLockr   r   r   r   r   Úboolr   r   r"   r+   r-   r/   Ú
contextlibÚcontextmanagerr2   r4   r@   r:   r	   r   rE   rJ   r>   rI   r(   r$   r   r   r      s"  … ñ	ð €IˆsÓØ%3 Y§^¡^Ó%5€N�I—N‘NÓ5Ø	ƒIØƒKØ˜‘Óñ$˜cð $¸3ó $ð"¨ð "°%¸¸XÀcÈ3ÀhÑ=OÐ8OÑ2Pó "ð ð ¨ó ð- Sð -¨U°3¸ÀÀcÀÑ8JÐ3JÑ-Kó -ò"ð ×Ññó ðò#ð" Sð "°Só "ð$˜E # t )Ñ,ó $ð+˜e C¨ IÑ.ð +°6ó +ò"ô"r$   r   )rW   r4   rT   Úpathlibr   Útypingr   r   r   r   r   r	   r   r(   r$   r   ú<module>r[      s#   ðÛ Û Û Ý ß >× >÷B"ò B"r$   