
    h'                     B   S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKr\R                  R                  \R                  R                  \5      S5      rS r\S:X  ak  \" \R"                  5      S:  aU  \R"                  S   S	:X  aB  \R"                  S
   S:H  r\R&                  " \\-  SS9  S r\" \5        \R*                  " 5         S SKrS SKrS SKJr  S SKJs  Jr  S SKrS SK J!q!J"r"J#r#  S SK$J%r&  Sq'Sq(/ SQq)S r*S r+ " S S5      q,[Y        [R        S    [N        5      q- " S S[B        5      q.[]        5       q/\q0 " S S5      r1S r2\ Rf                  " \2\5        S r4S r5S r6S r7S  r8S! r9\S:X  a)  \5" S"S#9  \5" S$S#9  \6" 5         \7" 5         \8" 5         \9" 5         gg)%    N)suppress)BytesIOzsession-refimported-%s.pklc                     SS K nUR                  5       R                  5       S   R                  SS[	        U5      -   S-   5      nSU< SUR                  5       < 3$ )Nr   z[obj][]z while testing (with refimported=z):  )	traceback
format_exc
splitlinesreplacereprlstrip)errorobjrefimportedr	   lines        Q/home/james-whalen/.local/lib/python3.13/site-packages/dill/tests/test_session.py_error_liner      sM    !,,.r2::7CS	MRUDUVD9DdkkmTT    __main__      --child   Truemodulec                 Z    S H.  n[        5       U   R                  [        R                  ;   a  M.   e   S[        R                  ;   a  S[        R                  ;   d   eSS KnSS KnS H3  n[        5       U   [        R                  S   R                  U   L a  M3   e   [        R                  R                  S:X  d   eU (       a  [        R                  UR                  L d   e[        R                  UR                  L d   eg ! [         a  n[        UWU 5      4Ul        e S nAff = f)Njsonurl	local_modsaxdomcalendarcmathr   )Calendarisleap)globals__name__sysmodulesr%   r&   __dict__r   day_name
__module__complex_loglogAssertionErrorr   args)r   r   r%   r&   r   s        r   test_modulesr4   !   s    	Ay~..#++=== B,CKK1GGG"-y~Z)@)I)I#)NNNN .$$//:===((H,=,====''599444 	%eS+>@EJ	s$   ,D A'D A)D 
D*D%%D*)r#   )r'   r(   r.   )r1      )AliceBobCarolc                     U S-  $ )Nr    xs    r   squaredr=   R   s
    q!tr   c                     U S-  $ )Nr   r:   r;   s    r   <lambda>r?   S   s    !Q$r   c                       \ rS rSrS rSrg)PersonT   c                     Xl         X l        g N)nameage)selfrE   rF   s      r   __init__Person.__init__U   s    	r   )rF   rE   N)r*   r/   __qualname____firstlineno__rH   __static_attributes__r:   r   r   rA   rA   T   s    r   rA   c                       \ rS rSrS rSrg)CalendarSubclassY   c                 \    U R                  5        Vs/ s H  n[        U   PM     sn$ s  snf rD   )iterweekdaysr.   )rG   is     r   weekdaysCalendarSubclass.weekdaysZ   s)    %)%6%6%89%8%8999s   )r:   N)r*   r/   rJ   rK   rS   rL   r:   r   r   rN   rN   Y   s    :r   rN   c                   P    \ rS rSr\" 5       R                  5       rS rS rS r	Sr
g)TestNamespace`   c                     Xl         g rD   )extra)rG   rY   s     r   rH   TestNamespace.__init__b   s    
r   c                     [        5       R                  5       U l        [        5       R                  5         [        5       R	                  U R
                  5        [        5       R	                  U R                  5        U $ rD   )r)   copybackupclearupdatetest_globalsrY   )rG   s    r   	__enter__TestNamespace.__enter__d   sM    inn&		**+	$r   c                 z    [        5       R                  5         [        5       R                  U R                  5        g rD   )r)   r^   r_   r]   )rG   exc_infos     r   __exit__TestNamespace.__exit__j   s"    		%r   )r]   rY   N)r*   r/   rJ   rK   r)   r\   r`   rH   ra   re   rL   r:   r   r   rV   rV   `   s    9>>#L&r   rV   c                    U R                   R                  SS5      S   S-   n[        U S5      (       a  U R                  OUn[        R
                  R                  [        R
                  R                  U R                   5      S5      n[        R                  U4[        R                  U44 H%  u  p4[        [        5         U" U5        S S S 5        M'     g ! , (       d  f       M9  = f)N.r   r   z.pyc
__cached____pycache__)__file__splithasattrri   ospathjoindirnameremove
removedirsr   OSError)r   cachedpycacherr   files        r   _clean_up_cacherx   n   s    __""3*1-6F")&,"?"?VVFggll277??6??;]KG))V,r}}g.FGg4L  Hs   	C
C&	c                     [         R                  nS H,  n[        5       U   R                  X   R                  :X  a  M,   e   S H  nX4   X   :X  a  M   e   S H.  nX4   R                  UL d   eX4   " S5      X   " S5      :X  a  M.   e   [
        R                  [         R                  :X  d   e[        [        [
        5      (       d   e[        R                  US   R                  :X  d   e[        [        [        5      (       d   e[        [        [        5      (       d   e[        R                  5       US   R                  5       :X  d   e[        [         L d   eg ! [          a  n[#        UWU5      4Ul        e S nAff = f)Nr   )r<   emptynames)r=   cubedr   personcal)r   r-   r)   r*   __globals__rA   r/   
isinstancer}   rF   
issubclassrN   r'   r~   rS   selfrefr2   r   r3   )mainglobals_copyr   	main_dictr   r   s         r   _test_objectsr   x   si   %%	 >C9S>**l.?.H.HHHH > +C>\%6666 + (C>--:::>!$(9!(<<<< (   H$5$5555&&))))zz\(377777*H5555#/0000||~e!4!=!=!????(""" !%k:<
s*   :E   E  0E  	CE   
F*E>>Fc           	      2   0 nU (       a
  SSK Jn  X!S'   [        S0 UD6 n [        R                  " [
        U -  U S9  SSKJnJnJ	n  UR                  U[        S[        U 5      /US9nU(       a  [         R                  " U5        [        [        5         [         R"                  " [
        U -  5        SSS5        [%        5       n[        R                  " XS9  UR'                  S5        [        R(                  " US	S
9  UR*                  S   " [,        UR*                  U 5        SSS5        g! , (       d  f       N= f! [        [        5         [         R"                  " [
        U -  5        SSS5        f ! , (       d  f       f = f= f! , (       d  f       g= f)zNtest dump/load_module() for __main__, both in this process and in a subprocessr   )flagsr   r   )pythonshellspr   )r   Nr   r   r   r:   )r+   r   rV   dilldump_modulesession_filedill.tests.__main__r   r   r   callrk   strexitr   rt   rn   rr   r   seekload_moduler]   r   )	r   extra_objectsr   nsr   r   r   r   session_buffers	            r   test_session_mainr      s   M!&g		'	'2	6\K7[Q==GGVXy#k:JKSXGYEchhuo'"		,45 # !AA
;
		/"8RYYD! 
(	' #"'"		,45 #"" 
(	'sT   FA$D=FD,2A1F,
D:	6F=FE4	+	F4
F>FF
Fc                    ^ SSK m[        R                  " [        T5        TTl        TR
                  R                  5        V s/ s H  o R                  S5      (       a  M  U PM     nn [        5       n[        R                  " UT5        U H  n TR
                  U 	 M     UR                  S5        [        R                  " UT5        [        U4S jU 5       5      (       d   eTR                  TL d   egs  sn f )z8test dump/load_module() for a module other than __main__r   N__c              3   @   >#    U  H  oTR                   ;   v   M     g 7frD   )r-   ).0r   r   s     r   	<genexpr>%test_session_other.<locals>.<genexpr>   s     >#foo%s   )test_classdefatexitregisterrx   r   r-   keys
startswithr   r   r   r   r   all)r   dict_objectsr   r   s      @r   test_session_otherr      s    "
OOOV,FN#)??#7#7#9V#9CPTAUC#9LVYN^V,OOC   ^V,>>>>>>>>V### Ws   C6!C6c                     SSK Jn   SnU " U5      nSUl        [        R                  R                  U5      nX2La9  [        SUR                  UR                  UR                  [        R                  S9  [        5       n[        R                  " XBSS9  UR                  5       nU " U5      n[        R                  " [        U5      US	9nUb   eUR                   U:X  d   eUR                  S:X  d   eU[        R"                  R%                  5       ;  d   eUR'                  S5        [        R                  " [        U5      5      nUR                   U:X  d   eUR                  S:X  d   eU[        R"                  R%                  5       ;  d   eg )
Nr   )
ModuleType__runtime__*   z:There are objects to save by referenece that shouldn't be:)rw   T)r   r   r   )typesr   r<   r   session_stash_modulesprint__dill_imported__dill_imported_as__dill_imported_top_levelr+   stderrr   r   getvaluer   r*   r,   valuesr   )r   modnameruntimemodr   session_dump
return_vals          r   test_runtime_moduler      sY    G!GGI
,,
%
%g
.C
J!!3#9#93;X;X::	 YN^F!**,L !G!!',"7HJw&&&99??#++,,.... w|45Gw&&&99??#++,,....r   c                     SS K n SS KnSS KnSS KnUR	                  S5      =n[
        R                  S'   UR                  R                  SS9[        l
        U R                  Ul        UR                  Ul        [        R                  Ul        [!        5       n[        R"                  " XTSS9  UR%                  S5        [        R&                  " U5      n[
        R                  S	 [)        UR*                  5      1 Sk:X  d   eg )Nr   __test__r   )max_workersTr   >   r   executorthread_exectypingAsyncContextManagerAsyncCMcollectionsUserDictDict)r   concurrent.futuresr   r   r   r+   r,   futuresThreadPoolExecutorr   r   r   r   r   r   r   r   r   r   loadsetr   )r   
concurrentr   r   r   r   s         r   test_refimported_imported_asr      s    $)$4$4Z$@@C#++j
!&&99a9HDM##CH,,CKmmCOYN^d;
))N
#CJs%%& +   r   c                     [        5          [        5       n [        R                  " U 5        S=qqB[        5       R                  5       nU R                  S5        [        R                  " U 5      nU[        5       Ld   e[        5       U:X  d   eUS   S:X  d   eUS   [        :X  d   eUS   [        Ld   eUS   [        :w  d   eSU;  d   eSU;   d   e S S S 5        g ! , (       d  f       g = f)Nr   r*   r   r{   r<   yrz   )rV   r   r   r   r<   r   rz   r)   r\   r   load_module_asdictr{   )r   globals_state	main_varss      r   test_load_module_asdictr      s    	 ( 	A	(A++N;		)))yM)))$
222!U***!...~""")###)###) 
s   CC  
C.Fr   T):r   rn   r+   r   
contextlibr   ior   r   ro   rp   rq   rk   r   r   r*   lenargvr   r   r4   r   r    urllibr!   xmlr#   xml.dom.minidomr$   minidomtest_dictviewsr"   r%   r'   r(   r.   r&   r1   r0   r<   rz   r{   r=   r|   rA   r}   rN   r~   r   rV   rx   r   r   r   r   r   r   r   r:   r   r   <module>r      s    	 
    ww||BGGOOH57STU
 zc#((mq0SXXa[I5M88A;&(K\K/
C2 HHJ      " 0 / $ !   
a!	:x : 
& &  +:E4$& /D.$. z%($' " r   