
    VhV                     l   U d dl Zd dlZd dlmZ d dlmZm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mZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"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l0m1Z1 d dl2m3Z3m4Z4m5Z5 d dl6Z6d dl7m8Z8m9Z9m:Z: g d	Z; e<       a=e<e5e4e>e4e?f   f      e@d
<   deAe5e4e>e4e?f   f      fdZBdeAe5e4e>e4e?f   f      fdZCd ZDdeAe5e4e>e4e?f   f      fdZE G d d      ZFd ZGd ZH ej                  d      d        ZJde4de>e?e?f   fdZKde<e?   fdZL G d d      ZMddde?fd ZNy)!    N)encode)CounterOrderedDict)%APPENDAPPENDSBINFLOATBINGETBININTBININT1BININT2	BINPERSIDBINPUT
BINUNICODEBUILDbytes_typesdecode_long
EMPTY_DICT
EMPTY_LIST	EMPTY_SETEMPTY_TUPLEGLOBALLONG1LONG_BINGETLONG_BINPUTMARKNEWFALSENEWOBJNEWTRUENONEPROTOREDUCESETITEMSETITEMSSHORT_BINSTRINGSTOPTUPLETUPLE1TUPLE2TUPLE3UnpicklingError)unpack)maxsize)AnyCallableUnion)_sparse_tensors_to_validateIMPORT_MAPPINGNAME_MAPPING)sysosposixnt_marked_safe_globals_setsafe_globalsc                 @    t         j                  t        |             a y N)r7   unionsetr8   s    M/home/dcms/DCMS/lib/python3.12/site-packages/torch/_weights_only_unpickler.py_add_safe_globalsr?   Y   s    7==c,>OP    returnc                       t        t              S r:   )listr7    r@   r>   _get_safe_globalsrE   ^   s    ())r@   c                      t               ay r:   )r<   r7   rD   r@   r>   _clear_safe_globalsrG   c   s
    "ur@   globals_to_removec                 (    t         t        |       z
  a y r:   )r7   r<   )rH   s    r>   _remove_safe_globalsrJ   h   s      8#>O:PPr@   c                   >    e Zd Zdeeeeeef   f      fdZd Z	d Z
y)_safe_globalsr8   c                     || _         y r:   r=   )selfr8   s     r>   __init__z_safe_globals.__init__p   s
    (r@   c                 .    t        | j                         y r:   )r?   r8   )rN   s    r>   	__enter__z_safe_globals.__enter__s   s    $++,r@   c                 .    t        | j                         y r:   )rJ   r8   )rN   typevaluetbs       r>   __exit__z_safe_globals.__exit__v   s    T../r@   N)__name__
__module____qualname__rC   r/   r.   tuplestrrO   rQ   rV   rD   r@   r>   rL   rL   o   s0    )T%%#:N0N*O%P )-0r@   rL   c                  @   i } t         D ]  }t        |t              r^t        |      dk7  rt	        dt        |             t        |d         t        urt        dt        |d                |\  }}|| |<   q|j                  |j                  }}|| | d| <    | S )N   zYExpected tuple of length 2 (global, str of callable full path), but got tuple of length:    zHExpected second item in tuple to be str of callable full path, but got: .)
r7   
isinstancerZ   len
ValueErrorrS   r[   	TypeErrorrX   rY   )rcfnamemodules       r>   _get_user_allowed_globalsrh      s    B% 'a1v{ opstupvowx  AaDz$^_cdefgdh_i^jk  GAtBtH<<DF%&B&4&!"' Ir@   c                  ^   t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j
                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  hS r:   )torch_utils_rebuild_parameter_rebuild_parameter_with_state_rebuild_qtensor_rebuild_tensor_rebuild_tensor_v2_rebuild_tensor_v3_rebuild_sparse_tensor_rebuild_meta_tensor_no_storage_rebuild_nested_tensor_rebuild_wrapper_subclass!_rebuild_device_tensor_from_numpy&_rebuild_device_tensor_from_cpu_tensorrD   r@   r>   _tensor_rebuild_functionsrx      s    ''22%%$$''''++44++.. 	66 	;;# r@   r^   c                     t         t        t        j                  j                  t        j
                  j                  t        j                  t        j                  t        j                  t        t        t        t        d} t        j                  j                         j!                         D ]  }|| t#        |      <    t        j                  j%                         D ]  }|| t#        |      <    t'        dd      D cg c]  }t)        t        d|        c}D ]  }|| t#        |      <    t'        dd      D cg c]  }t)        t        d|        c}D ]  }|| t#        |      <    t        j*                  D ]   }|| |j,                   d|j.                   <   " t        j0                  D ]  }|t        j                  j2                  t        j                  j4                  fvrFt        j
                  j7                  |j.                        | |j,                   d|j.                   <   || |j,                   d|j.                   <    t        j8                  t        j:                  t        j<                  t        j>                  t        j@                  fD ]  }|| t#        |      <    tC               D ]  }|| d|j.                   <    t        jD                  jF                  | d<   | S c c}w c c}w )	N)zcollections.OrderedDictzcollections.Counterztorch.nn.parameter.Parameterztorch.serialization._get_layoutz
torch.Sizeztorch.Tensorztorch.devicez_codecs.encodezbuiltins.bytearrayzbuiltins.setzbuiltins.complexr^      uintintr_   ztorch._utils.z#torch._tensor._rebuild_from_type_v2)$r   r   rj   nn	Parameterserialization_get_layoutSizeTensordevicer   	bytearrayr<   complexstorage_dtype_to_storage_type_mapkeysr[   _new_dtypesrangegetattr_tensor_classesrX   rW   _storage_classesTypedStorageUntypedStorageStorageTypeper_tensor_affineper_tensor_symmetricper_channel_affineper_channel_symmetric per_channel_affine_float_qparamsrx   _tensor_rebuild_from_type_v2)rd   txtttsqtre   s          r>   _get_allowed_globalsr      s|    $/&(-(:(:+0+>+>+J+Jjj '#B ]]557<<> 3q6
]]&&( 3q6
271+>QgetA3Z(> 3q6
16q!=Ages1#Y'= 3q6
 ## 2/1bmm_Abkk]+,2 $$ 6emm00%--2N2NOO383F3F3R3R4B"--"++/0 46B"--"++/06 	""  ##..  3r7 '( -+,]1::,'(-
 160S0SB,-IC ?=s   ?K/=K4readlinec                      |        d d j                  d      } |        d d j                  d      }||ft        v rt        ||f   \  }}||fS |t        v r	t        |   }||fS )Nutf-8)decoder2   r1   )r   rg   rf   s      r>   _read_global_instructionr      s|    Z_##G,F:cr?!!'*D 	~%#VTN3 4< 
>	!'4<r@   c                    t               }| j                  }| j                  }i t        d   dt        d   dt
        d   dt        d   dt        d   dt        d   dt        d   dt        d   dt        d   dt        d   dt        d   dt        d   dt        d   dt         d   dt"        d   dt$        d   dt&        d   dt(        d   dt*        d   dt,        d   dt.        d   dt0        d   dt2        d   dt4        d   dt6        d   dt8        d   dt:        d   dt<        d   di}	  |d      }|st>        tA        |tB              sJ |d   tD        d   k(  r%tG        |      \  }}|jI                  | d|        n|d   |v r||d      }|r ||       n|d   tJ        d   k(  r2tM        d |d            d   }	|	tN        kD  rtQ        d       ||	       nh|d   tR        d   tT        d   hv r |d      d   }	 ||	       n=|d   tV        d   k(  r |d      d    n"|d   tX        d   k(  r|S tQ        d	|d          )
Nr      r^   r]   rz   r_   <IString is too longUnsupported operand )-r<   readr   r   r!   r   r   r   r"   r#   r   r&   r'   r(   r)   r   r   r   r   r   r   r   r   r
   r   r   r   r	   r   r   r   EOFErrorr`   r   r   r   addr   r+   r,   r*   r$   r   r    r%   )
fileglobals_in_checkpointr   r   op_to_bytes_to_readkeyrg   rf   bytes_to_readstrlens
             r>   get_globals_in_pklr      s   E99D}}Hq	1q	1 	a! 	q	1	
 	
A 	
A 	Q 	Q 	a! 	q	1 	q	1 	q	1 	Q 	Q 	
A  	A!" 	1q#$ 	1q!a!aq	1
A
AQq	1Aq	1A9< 1gN#{+++q6VAY3H=LFD!%%$&89V**/A7M]#Vz!}$D$q'*1-F%&:;;LV*E!H55!WQZFLVuQxGAJVtAw((!$8Q"ABB7 r@   c                   0    e Zd ZdddefdZd Zd Zd Zy)		Unpicklerbytesencodingr   c                r    || _         |j                  | _        |j                  | _        i | _        d| _        y )Nr   )r   r   r   memoproto)rN   r   r   s      r>   rO   zUnpickler.__init__2  s-     II	$&	
r@   c           	         g | _         g | _        | j                  j                  | _        | j                  }	  |d      }|st        t        |t              sJ |d   t        d   k(  rt        | j                        \  }}| d| }|t        v rt        d| d| d      |t               v r| j                  t               |          n|t               v r| j                  t               |          n|dv rt        d	      |d
v rt        d      d}||v r?||dt        |       k(  r.|t        |      d }t        |      dkD  r|d   dk(  r|dd n||z   }t        d| d| d| d      |d   t        d   k(  r| j                  j!                         }| j                  j!                         }|t"        j$                  j&                  u r-| j                  t#        j$                  j&                  |        
n|t               j)                         v s|t               j)                         v r[ |j*                  |g| }	|t"        j,                  v r#d|j.                  v rt1        j                  |	       | j                  |	       
n`t        d|       |d   t2        d   k(  r| j                  j!                         }| j                  d   }
|
t               j)                         vr(|
t               j)                         vrt        d|
        |
| }	|
t"        j,                  v r#d|
j.                  v rt1        j                  |	       |	| j                  d<   	n|d   t4        d   k(  r| j                  j!                         }| j                  d   }t7        |      t"        j8                  u r |j:                  |  	n(t7        |      t"        j$                  j&                  u r|j=                  |       nt7        |      t>        u r|j@                  jC                  |       nt7        |      t               j)                         v s#t7        |      t               j)                         v rtE        |d      r|j=                  |       n]d}t        |tF              rt        |      dk(  r|\  }}|r|j@                  jC                  |       |r|jI                         D ]  \  }}tK        |||        nt        dt7        |             |d   tL        d   k(  rd| j                  j!                         }| j                  d   }t7        |      tN        urt        dt7        |             |j                  |       ng|d   tP        d   k(  rZ| jS                         }| j                  d   }t7        |      tN        urt        dt7        |             |jU                  |       n|d   tV        d   k(  rH| j                  j!                         | j                  j!                         }}|| j                  d   |<   n|d   tX        d   k(  rH| jS                         }t[        dt        |      d      D ]  }||dz      | j                  d   ||   <    nP|d   t\        d   k(  rI| j                   j                  | j                         g | _        | j                  j                  | _        n|d   t^        d   k(  r,| jS                         }| j                  tG        |             n|d   t`        d   k(  r| j                  d   f| j                  d<   n|d   tb        d   k(  r.| j                  d   | j                  d   fg| j                  dd nR|d   td        d   k(  r<| j                  d   | j                  d   | j                  d   fg| j                  dd n|d   tf        d   k(  r| j                  d       n|d   th        d   k(  r| j                  d       n|d   tj        d   k(  r| j                  d       n|d   tl        d   k(  r| j                  d       n|d   tn        d   k(  r| j                  g        n]|d   tp        d   k(  r| j                  i        n;|d   tr        d   k(  r| j                  tu                      n|d   tv        d   k(  r&| j                  ty        d |d             d          n|d   tz        d   k(  r%| j                  | j                  d      d          n|d   t|        d   k(  r&| j                  ty        d! |d            d          ns|d   t~        d   k(  r/| j                  ty        d"| j                  d#            d          n5|d   t        d   k(  rOty        d$ |d             d   }|t        kD  rt        d%      t         ||      d&d'      }| j                  |       n|d   t        d   k(  rQ |d      d   } ||      }| j                  d(k7  r|j                  | j                  d)      }| j                  |       nw|d   t        d   k(  r| j                  j!                         }t7        |      tF        ur(t7        |      t        u rt        d*t7        |             t7        |      tF        u rDt        |      dkD  r6t"        j                  j                  |d         d+k7  rt        d,|d          | j                  | j                  |             n|d   t        d   t        d   fv rL|d   t        d   k(  r |d      nty        d$ |d             d   }| j                  | j                  |          n;|d   t        d   t        d   fv rY|d   t        d   k(  r |d      nty        d$ |d             d   }|dk  rt        d-      | j                  d   | j                  |<   n|d   t        d   k(  r. |d      d   } ||      }| j                  t        |             n|d   t        d   k(  rC |d      d   | _T        | j                  dk7  r`t        j                  d.| j                   d/       n<|d   t        d   k(  r| j                  j!                         }|S t        d0|d          )1zRead a pickled object representation from the open file.

        Return the reconstituted object hierarchy specified in the file.
        Tr^   r   r_   z"Trying to load unsupported GLOBAL z whose module z is blocked.)z1torch.nested._internal.nested_tensor.NestedTensorz1torch.nested._internal.nested_tensor._rebuild_njtz"torch._dynamo.decorators._DimRangez\``torch.nested`` and ``torch._dynamo`` must be imported to load nested jagged tensors (NJTs))z(torch.distributed.device_mesh.DeviceMeshz2torch.distributed.tensor._dtensor_spec.DTensorSpecz1torch.distributed.tensor._dtensor_spec.TensorMetaz torch.distributed.tensor.DTensorz0torch.distributed.tensor.placement_types.Partialz2torch.distributed.tensor.placement_types.Replicatez.torch.distributed.tensor.placement_types.Shardz>``torch.distributed.tensor`` must be imported to load DTensorsbuiltinsNzUnsupported global: GLOBAL zY was not an allowed global by default. Please use `torch.serialization.add_safe_globals([z.])` or the `torch.serialization.safe_globals([zN])` context manager to allowlist this global if you trust this class/function.sparsezbCan only create new object for nn.Parameter or classes allowlisted via `add_safe_globals` but got r   z0Trying to call reduce for unrecognized function __setstate__r]   zcCan only build Tensor, Parameter, OrderedDict or types allowlisted via `add_safe_globals`, but got z"Can only append to lists, but got zCan only extend lists, but got FrD   z<ir   z<Hz>drz   r   r   r   surrogatepassr   strictz1persistent_load id must be tuple or int, but got r   z4Only persistent_load of storage is allowed, but got znegative argumentzDetected pickle protocol z in the checkpoint, which was not the default pickle protocol used by `torch.load` (2). The weights_only Unpickler might not support all instructions implemented by this protocol, please file an issue for adding support if you encounter this.r   )X	metastackstackappendr   r   r`   r   r   r   r   _blocklisted_modulesr*   r   rh   ra   r   poprj   r}   r~   values__new__r   rX   r0   r!   r   rS   r   set_r   r   __dict__updatehasattrrZ   itemssetattrr   rC   r   pop_markextendr"   r#   r   r   r&   r'   r(   r)   r   r   r   r   r   r   r   r<   r
   r+   r   r   r   r   r,   r[   r$   r   r   r   r|   r   _maybe_decode_asciipersistent_loadr	   r   r   r   r   rb   r   r   r    r   warningswarnr%   )rN   r   r   rg   rf   	full_pathbuiltins_nameargsclsresultfuncstateinst	slotstatekvitemlist_objr   ir   strvalstrdatapididxndatard   s                               r>   loadzUnpickler.load9  s   
  "
jj''yyq'Cc;///1v"7F%hav.	11)<YK~V\U]]ij   4 66KK 4 6y AB";"==KK 9 ;I FG *v  
 *X  %/M%2)Y7K]9K-LL$-c-.@.B$C	  #9~1ilc6I &abM!.!: "
 *5i[ AMMVK X>>G[ I<<  Q6!9$zz~~'jjnn&%((,,,KK 2 2D 9:46==??24;;==(S[[4t4Fe333CNN8R3::6BKK')::=@  Q6!9$zz~~'zz"~ 4 6 = = ??$=$?$F$F$HH)J4&Q  t5000X5P/66v>!'

2Q58#

(zz"~:-DIIu%$Z588#5#55%%e,$Z;.MM((/J";"="D"D"FFDz%9%;%B%B%DDt^4))%0 %)	%eU3E
a/4,E9  MM007$(1(9 41 'a 34 *;;?:,H 
 Q6!9$zz~~'::b>>-)<T(^<LM  %Q71:%::b>>-)9$x.9IJ  &Q71:%**..*DJJNN,<A$%

2q!Q8A;&q#e*a0 <A/4QU|DJJrN58,<Q47"%%djj1
"jj//Q58#E%L)Q6!9$"&**R.!2

2Q6!9$$(JJrNDJJrN#C"D

23Q6!9$$(JJrNDJJrNDJJrN#S"T

23Q47"D!Q8A;&E"Q71:%D!Q;q>)BQ:a=(BQ:a=(BQ9Q<'CE"Q6!9$F4a1!45Q71:%DIIaLO,Q71:%F4a1!45Q8A;&F416q9:Q:a=(d1g.q1G#)*>??T&\7ODF#Q?1--av,==G+%nnT]]HEGG$Q9Q<'jjnn&9E)$s)32F)KDQTI;W  I&C1++??AG9T)NsSTvhW  D0056QF1I{1~66"%a&F1I"5tAw6$Q;PRSTDIIcN+QF1I{1~66 #A&) 3T!Wd1g9NPQRq5$%899#zz"~		!Q58#GAJAwK-.Q58#!!WQZ
::?MM3DJJ< @Y Y Q47"ZZ^^%	%(<SVH&EFF[ r@   c                     | j                   }| j                  j                         | _         | j                   j                  | _        |S r:   )r   r   r   r   )rN   r   s     r>   r   zUnpickler.pop_mark2  s5    

^^'')
jj''r@   c                     t        d      )Nz%unsupported persistent id encountered)r*   )rN   r   s     r>   r   zUnpickler.persistent_load8  s    EFFr@   N)rW   rX   rY   r[   rO   r   r   r   rD   r@   r>   r   r   1  s$    07 # vGrGr@   r   ASCIIr   r   c                8    t        | |      j                         S )Nr   )r   r   )r   r   s     r>   r   r   <  s    TH-2244r@   )O	functools
_functoolsr   _codecsr   collectionsr   r   pickler   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   structr+   r3   r,   typingr-   r.   r/   rj   torch._utilsr0   r1   r2   r   r<   r7   rZ   r[   __annotations__rC   r?   rE   rG   rJ   rL   rh   rx   	lru_cacher   r   r   r   r   rD   r@   r>   <module>r      s  2    ,& & & & & & & & & &N   ' '  R R
  HKu #eHeHcM.B$BCD LQDxx}9M/M)N$O Q
*4hhm0D&D EF *
%
QE(E(C-,@"@ABQ0 0$(. a 5 !5p	x 	E#s(O 	=CC =C@HG HGV #* 5C 5r@   