
    [i                         d dl Z d dl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e          Z G d	 d
e          ZddZdS )    N)
_compat_pickle_extension_registry_getattribute_PicklerEXT1EXT2EXT4GLOBALPicklingErrorSTACK_GLOBAL)pack)FunctionType   )ImporterObjMismatchErrorObjNotFoundErrorsys_importerc                   (     e Zd Z fdZ fdZ xZS )_PyTorchLegacyPicklerc                 H     t                      j        |i | d | _        d S N)super__init___persistent_id)selfargskwargs	__class__s      Q/var/www/icac/venv/lib/python3.11/site-packages/torch/package/_package_pickler.pyr   z_PyTorchLegacyPickler.__init__   s-    $)&)))"    c                 ~    | j         !t                                          |          S |                      |          S r   )r   r   persistent_id)r   objr   s     r   r"   z#_PyTorchLegacyPickler.persistent_id   s8    &77((---""3'''r    )__name__
__module____qualname__r   r"   __classcell__r   s   @r   r   r      sQ        # # # # #( ( ( ( ( ( ( ( (r    r   c                   0     e Zd ZdZdef fdZddZ xZS )PackagePicklerzPackage-aware pickler.

    This behaves the same as a normal pickler, except it uses an `Importer`
    to find objects and modules to save.
    importerc                     || _          t                      j        |i | t          j                                        | _        t          j        | j        t          <   d S r   )	r+   r   r   r   dispatchcopyr*   save_globalr   )r   r+   r   r   r   s       r   r   zPackagePickler.__init__(   sS     $)&))) !)..00&4&@l###r    Nc           
      ^   | j         }| j        }	 | j                            ||          \  }}n<# t          t
          f$ r(}t          d| dt          |                     |d }~ww xY w| j                            |          }t          j
        dk    rZ|                    d          }d|v rt          d|          t          |          dk    r|}	n,t          ||d d                   }	nt          ||          \  }
}	| j        d	k    rt          j        ||f          }|r{|d
k    sJ |dk    r" |t"          t%          d|          z              nI|dk    r" |t&          t%          d|          z              n! |t(          t%          d|          z              d S |                    d          d	         }|	|u r|}| j        dk    r<|                     |           |                     |            |t.                     n|	|ur|                     t2          |	|f           n| j        dk    r9 |t4          t7          |d          z   dz   t7          |d          z   dz              n| j        r8t:          j        }t:          j        }||f|v r|||f         \  }}n||v r||         }	  |t4          t7          |d          z   dz   t7          |d          z   dz              n1# t@          $ r$}t          d| d| d| j        d          |d }~ww xY w| !                    |           d S )NzCan't pickle z: )      .z<locals>zCan't pickle local object r      r      z<Bi  z<Hz<i   r1   zutf-8   
asciiz can't pickle global identifier 'z' using pickle protocol d)"writememor+   get_namer   r   r   strimport_modulesysversion_infosplitlenr   protor   getr   r   r   r	   
rpartitionsaver   save_reducegetattrr
   bytesfix_importsr   REVERSE_NAME_MAPPINGREVERSE_IMPORT_MAPPINGUnicodeEncodeErrormemoize)r   r#   namer;   r<   module_nameerrmodule
name_partsparent_codelastnamer_name_mappingr_import_mappingexcs                   r   r/   zPackagePickler.save_global5   s   
 
y	L $ 6 6sD A AK "23 	L 	L 	L A A As3xx A ABBK	L ,,[99w&& CJZ''#$H$H$HIII:!##&vz#2#??%fd33IAv :??&*K+>??D axxxx4<<E$dD!1!112222V^^E$dD!1!112222E$dD!1!11222??3''*VD:??IIk"""IIdOOOE,6!!Wvx&89999Z1__EW--. g&&' 	     @!/!D#1#H &.88(6T7J(K%K $444"2;"?KK112 D'**+ 	    &   #6v 6 6 6 6'+z56 6   	Ss-   / A( #A##A(.8K' '
L1LLr   )r$   r%   r&   __doc__r   r   r/   r'   r(   s   @r   r*   r*   !   sq         A A A A A A AQ Q Q Q Q Q Q Qr    r*   r7   c                 Z    |t           u rt          | |          S t          || |          S )N)protocol)r   r   r*   )data_bufr+   r^   s      r   create_picklerr`      s7    < %XAAAAh8DDDDr    )r7   )r@   pickler   r   r   r   r   r   r	   r
   r   r   structr   typesr   r+   r   r   r   r   r   r*   r`    r    r   <module>re      sT   


                                    P P P P P P P P P P P P( ( ( ( (H ( ( (e e e e e* e e ePE E E E E Er    