
    Χg                         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e          Zdd	Zd
S )    )_compat_pickle_extension_registry_getattribute_PicklerEXT1EXT2EXT4GLOBALPicklerPicklingErrorSTACK_GLOBAL)pack)FunctionType   )ImporterObjMismatchErrorObjNotFoundErrorsys_importerc                   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 N)	r   super__init__r   dispatchcopyr   save_globalr   )selfr   argskwargs	__class__s       Z/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/package/_package_pickler.pyr   zPackagePickler.__init__   sS     $)&))) !)..00&4&@l###    Nc           	      z   | j         }| j        }	 | j                            ||          \  }}n<# t          t
          f$ r(}t          d| dt          |                     d d }~ww xY w| j                            |          }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|                     t*          |	|f           n| j
        dk    r9 |t,          t/          |d          z   dz   t/          |d          z   dz              n| j        r8t2          j        }t2          j        }||f|v r|||f         \  }}n||v r||         }	  |t,          t/          |d          z   dz   t/          |d          z   dz              n)# t8          $ r t          d||| j
        fz            d w xY w|                     |           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   getr   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_mappings                 r#   r   zPackagePickler.save_global)   sg    
y	M $ 6 6sD A AK "23 	M 	M 	M A A As3xx A ABBL	M ,,[99!&$//	6 :??&*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'**+ 	    &   #),2D$*+EF   	Ss!   / A( #A##A(8I= =&J#r   )__name__
__module____qualname____doc__r   r   r   __classcell__)r"   s   @r#   r   r      sq         A A A A A A AD D D D D D D Dr$   r   r)   c                 Z    |t           u rt          | |          S t          || |          S )N)protocol)r   r   r   )data_bufr   rO   s      r#   create_picklerrQ   p   s7    < x(3333h8DDDDr$   N)r)   )pickler   r   r   r   r   r   r	   r
   r   r   r   structr   typesr   r   r   r   r   r   r   rQ    r$   r#   <module>rV      s(                                        P P P P P P P P P P P PX X X X XX X X XvE E E E E Er$   