U
    •Ê¹j  ã                   @   s†   d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZ ddlmZ ddlmZmZmZmZ G dd„ deƒZdd
d„ZdS )zisort:skip_fileé    )Ú_compat_pickleÚ_extension_registryÚ_getattributeÚ_PicklerÚEXT1ÚEXT2ÚEXT4ÚGLOBALÚPicklerÚPicklingErrorÚSTACK_GLOBAL)Úpack)ÚFunctionTypeé   )ÚImporterÚObjMismatchErrorÚObjNotFoundErrorÚsys_importerc                       s0   e Zd ZdZedœ‡ fdd„Zddd„Z‡  ZS )	ÚPackagePicklerz‘Package-aware pickler.

    This behaves the same as a normal pickler, except it uses an `Importer`
    to find objects and modules to save.
    )Úimporterc                    s0   || _ tƒ j||Ž tj ¡ | _tj| jt< d S )N)	r   ÚsuperÚ__init__r   ÚdispatchÚcopyr   Úsave_globalr   )Úselfr   ÚargsÚkwargs©Ú	__class__© ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torch/package/_package_pickler.pyr      s    zPackagePickler.__init__Nc              
   C   s2  | j }| j}z| j ||¡\}}W n@ ttfk
rb } ztd|› dt|ƒ› �ƒd ‚W 5 d }~X Y nX | j |¡}t	||ƒ\}}	| j
dkrôt ||f¡}
|
rô|
dks¦t‚|
dkrÂ|ttd|
ƒ ƒ n.|
dkrÞ|ttd|
ƒ ƒ n|ttd	|
ƒ ƒ d S | d
¡d }|	|k�r|}| j
dk�r:|  |¡ |  |¡ |tƒ nê|	|k	�rV|  t|	|f¡ nÎ| j
dk�rˆ|tt|dƒ d t|dƒ d ƒ nœ| j�rÎtj}tj}||f|k�r¼|||f \}}n||k�rÎ|| }z(|tt|dƒ d t|dƒ d ƒ W n, tk
�r"   td||| j
f ƒd ‚Y nX |  |¡ d S )NzCan't pickle z: é   r   éÿ   z<Biÿÿ  z<Hz<iÚ.é   é   zutf-8ó   
Úasciiz?can't pickle global identifier '%s.%s' using pickle protocol %i)ÚwriteÚmemor   Úget_namer   r   r   ÚstrÚimport_moduler   Úprotor   ÚgetÚAssertionErrorr   r   r   r   Ú
rpartitionÚsaver   Úsave_reduceÚgetattrr	   ÚbytesÚfix_importsr   ÚREVERSE_NAME_MAPPINGÚREVERSE_IMPORT_MAPPINGÚUnicodeEncodeErrorÚmemoize)r   ÚobjÚnamer)   r*   Úmodule_nameÚerrÚmoduleÚ_ÚparentÚcodeÚlastnameÚr_name_mappingÚr_import_mappingr    r    r!   r   )   s†    ,





ÿþýüÿ
ÿþýüÿ
ÿÿýzPackagePickler.save_global)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   Ú__classcell__r    r    r   r!   r      s   r   r%   c                 C   s&   |t krt| |d�S t|| |d�S d S )N)Úprotocol)r   r
   r   )Zdata_bufr   rK   r    r    r!   Úcreate_picklerp   s    rL   N)r%   )rI   Úpickler   r   r   r   r   r   r   r	   r
   r   r   Ústructr   Útypesr   r   r   r   r   r   r   rL   r    r    r    r!   Ú<module>   s   4[