
    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y)    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                 2    t        |   |i | d | _        y N)super__init___persistent_id)selfargskwargs	__class__s      X/var/www/html/engine/venv/lib/python3.12/site-packages/torch/package/_package_pickler.pyr   z_PyTorchLegacyPickler.__init__   s    $)&)"    c                 \    | j                   t        | 	  |      S | j                  |      S r   )r   r   persistent_id)r   objr   s     r   r"   z#_PyTorchLegacyPickler.persistent_id   s0    &7(--""3''r    )__name__
__module____qualname__r   r"   __classcell__r   s   @r   r   r      s    #( (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        |   |i | t        j                  j                         | _        t        j                  | j                  t        <   y r   )	r+   r   r   r   dispatchcopyr*   save_globalr   )r   r+   r   r   r   s       r   r   zPackagePickler.__init__(   sH     $)&) !))..0&4&@&@l#r    c           
         | j                   }| j                  }	 | j                  j                  ||      \  }}| j                  j                  |      }t        j                  dk\  rD|j                  d      }d|v rt        d|      t        |      dk(  r|}	nt        ||d d       }	nt        ||      \  }
}	| j                  d	k\  rxt        j                   ||f      }|r_|d
kD  sJ |dk  r |t"        t%        d|      z          y |dk  r |t&        t%        d|      z          y  |t(        t%        d|      z          y |j+                  d      d	   }|	|u r|}| j                  dk\  r/| j-                  |       | j-                  |        |t.               n|	|ur| j1                  t2        |	|f       n| j                  dk\  r- |t4        t7        |d      z   dz   t7        |d      z   dz          ns| j8                  r:t:        j<                  }t:        j>                  }||f|v r|||f   \  }}n	||v r||   }	  |t4        t7        |d      z   dz   t7        |d      z   dz          | jC                  |       y # t        t
        f$ r }t        d| dt        |             |d }~ww xY w# t@        $ r%}t        d| d| d| j                  d      |d }~ww xY w)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   
 

yy	L $ 6 6sD AK ,,[9w& CJZ'#&@$HII:!#&vz#2?%fd3IAv ::?&**K+>?Daxx4<$dD!112
 	 V^$dD!112  $dD!112??3'*VD::?IIk"IIdO,6!Wvx&89ZZ1_W-. g&' 	 !/!D!D#1#H#H &.8(6T7J(K%K $44"2;"?KK12 D'*+ 	 	SM !"23 	L-uBs3xj ABK	L@ & #6vhav F''+zz!n6 s/   I7 9,J) 7J&J!!J&)	K2 KKr   )r$   r%   r&   __doc__r   r   r/   r'   r(   s   @r   r*   r*   !   s    A AQr    r*   c                 H    |t         u rt        | |      S t        || |      S )N)protocol)r   r   r*   )data_bufr+   r^   s      r   create_picklerr`      s(    < %XAAh8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      sI         P P(H (e* ePEr    