
    ΅iu                         S SK r S SKJrJrJrJrJrJrJrJ	r	J
r
Jr  S SKJr  S SKJr  SSKJrJrJrJr   " S S\5      r " S	 S
\5      rSS jrg)    N)
_compat_pickle_extension_registry_getattribute_PicklerEXT1EXT2EXT4GLOBALPicklingErrorSTACK_GLOBAL)pack)FunctionType   )ImporterObjMismatchErrorObjNotFoundErrorsys_importerc                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )_PyTorchLegacyPickler   c                 4   > [         TU ]  " U0 UD6  S U l        g N)super__init___persistent_id)selfargskwargs	__class__s      X/home/james-whalen/.local/lib/python3.13/site-packages/torch/package/_package_pickler.pyr   _PyTorchLegacyPickler.__init__   s    $)&)"    c                 ^   > U R                   c  [        TU ]	  U5      $ U R                  U5      $ r   )r   r   persistent_id)r   objr   s     r    r$   #_PyTorchLegacyPickler.persistent_id   s0    &7(--""3''r"   )r   )__name__
__module____qualname____firstlineno__r   r$   __static_attributes____classcell__r   s   @r    r   r      s    #( (r"   r   c                   >   ^  \ rS rSrSrS\4U 4S jjrSS jrSrU =r	$ )PackagePickler!   zPackage-aware pickler.

This behaves the same as a normal pickler, except it uses an `Importer`
to find objects and modules to save.
importerc                    > Xl         [        TU ]  " U0 UD6  [        R                  R                  5       U l        [        R                  U R                  [        '   g r   )	r1   r   r   r   dispatchcopyr/   save_globalr   )r   r1   r   r   r   s       r    r   PackagePickler.__init__(   sF     $)&) !))..0&4&@&@l#r"   c           
         U R                   nU R                  n U R                  R                  X5      u  pRU R                  R                  U5      n[        R                  S:  aG  UR                  S5      nSU;   a  [        SU< 35      e[        U5      S:X  a  Un	O[        XxS S 5      n	O[        Xr5      u  pU R                  S	:  a  [        R                   " XR45      nU(       an  US
::  a  [#        SU 35      eUS::  a  U" [$        ['        SU5      -   5        g US::  a  U" [(        ['        SU5      -   5        g U" [*        ['        SU5      -   5        g UR-                  S5      S	   nXL a  UnU R                  S:  a/  U R/                  U5        U R/                  U5        U" [0        5        OXLa  U R3                  [4        X45        OU R                  S:  a-  U" [6        [9        US5      -   S-   [9        US5      -   S-   5        OwU R:                  (       a9  [<        R>                  n[<        R@                  nXR4U;   a	  XU4   u  pRO	X^;   a  X   n U" [6        [9        US5      -   S-   [9        US5      -   S-   5        U RE                  U5        g ! [        [
        4 a   n[        SU S[        U5       35      UeS nAff = f! [B         a%  n[        SU SU SU R                  S 35      UeS nAff = f)NzCan't pickle z: )      .z<locals>zCan't pickle local object r      r   z&expected positive extension code, got    z<Bi  z<Hz<i   r8   zutf-8   
asciiz can't pickle global identifier 'z' using pickle protocol d)#writememor1   get_namer   r   r   strimport_modulesysversion_infosplitlenr   protor   getAssertionErrorr   r   r   r	   
rpartitionsaver   save_reducegetattrr
   bytesfix_importsr   REVERSE_NAME_MAPPINGREVERSE_IMPORT_MAPPINGUnicodeEncodeErrormemoize)r   r%   namerB   rC   module_nameerrmodule
name_partsparent_codelastnamer_name_mappingr_import_mappingexcs                   r    r5   PackagePickler.save_global5   s   
 

yy	L $ 6 6s AK ,,[9w& CJZ'#&@$HII:!#&v#2?%f3IA ::?&**K+>?D19(@G  4<$dD!112
 	 V^$dD!112  $dD!112??3'*D::?IIk"IIdO,!Wv&89ZZ1_W-. g&' 	 !/!D!D#1#H#H &.8(6T7J(K%K 4"2"?KK12 D'*+ 	 	SS !"23 	L-uBs3xj ABK	LF & #6vhav F''+zz!n6 s/   J ,K K!J<<K
K3 K..K3)r3   r1   r   )
r'   r(   r)   r*   __doc__r   r   r5   r+   r,   r-   s   @r    r/   r/   !   s"    A AT Tr"   r/   c                 :    U[         L a	  [        XS9$ [        XUS9$ )N)protocol)r   r   r/   )data_bufr1   rg   s      r    create_picklerri      s$    < %XAAh8DDr"   )r>   )rG   pickler   r   r   r   r   r   r	   r
   r   r   structr   typesr   r1   r   r   r   r   r   r/   ri    r"   r    <module>rn      sI         P P(H (h* hVEr"   