
    bi'                     L   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlZej                  j                  ej                  j                  e      d      Zd Zedk(  rl eej"                        dk\  rWej"                  d   d	k(  rEej"                  d
   dk(  Z ej&                  eez  d       d Z ee        ej*                          d dlZd dlZd dlmZ d dlmc mZ d dlZd dl m!a!m"Z"m#Z# d dl$m%Z& da'da(g da)d Z*d Z+ G d d      a,tY        tR        d    tN              a- G d dtB              a.t]               a/ea0 G d d      Z1d Z2 e jf                  e2e       d Z4d Z5d Z6d Z7d  Z8d! Z9edk(  r/ e5d"#        e5d$#        e6         e7         e8         e9        yy)%    N)suppress)BytesIOzsession-refimported-%s.pklc                     dd l }|j                         j                         d   j                  ddt	        |      z   dz         }d|d|j                         S )Nr   z[obj][]z while testing (with refimported=z):  )	traceback
format_exc
splitlinesreplacereprlstrip)errorobjrefimportedr	   lines        R/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dill/tests/test_session.py_error_liner      sM    !,,.r2::7CS	MRUDUVD9DdkkmTT    __main__      --child   Truemodulec                 2   	 dD ]+  }t               |   j                  t        j                  v r+J  dt        j                  v rdt        j                  v sJ dd l}dd l}dD ]1  }t               |   t        j                  d   j                  |   u r1J  t        j                  j                  dk(  sJ | rt        j                  |j                  u sJ t        j                  |j                  u sJ y # t        $ r}t        ||       f|_         d }~ww xY w)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~..#++===>,CKK1GGG"- Oy~Z)@)I)I#)NNNNO$$//:===((H,=,====''599444 	%eS+>@EJ	s$   ,C4 A#C4 A C4 4	D=DD)r#   )r'   r(   r.   )r1      )AliceBobCarolc                     | dz  S )Nr    xs    r   squaredr=   R   s
    q!tr   c                     | dz  S )Nr   r:   r;   s    r   <lambda>r?   S   s
    !Q$ r   c                       e Zd Zd Zy)Personc                      || _         || _        y N)nameage)selfrD   rE   s      r   __init__zPerson.__init__U   s    	r   N)r*   r/   __qualname__rG   r:   r   r   rA   rA   T   s    r   rA   c                       e Zd Zd Zy)CalendarSubclassc                 V    | j                         D cg c]  }t        |    c}S c c}w rC   )iterweekdaysr.   )rF   is     r   weekdayszCalendarSubclass.weekdaysZ   s#    %)%6%6%89999s   &N)r*   r/   rH   rN   r:   r   r   rJ   rJ   Y   s    :r   rJ   c                   H    e Zd Z e       j	                         Zd Zd Zd Zy)TestNamespacec                     || _         y rC   )extra)rF   rR   s     r   rG   zTestNamespace.__init__b   s	    
r   c                     t               j                         | _        t               j                          t               j	                  | j
                         t               j	                  | j                         | S rC   )r)   copybackupclearupdatetest_globalsrR   )rF   s    r   	__enter__zTestNamespace.__enter__d   sM    inn&		**+	$r   c                 z    t               j                          t               j                  | j                         y rC   )r)   rV   rW   rU   )rF   exc_infos     r   __exit__zTestNamespace.__exit__j   s"    		%r   N)	r*   r/   rH   r)   rT   rX   rG   rY   r\   r:   r   r   rP   rP   `   s    9>>#L&r   rP   c                    | j                   j                  dd      d   dz   }t        | d      r| j                  n|}t        j
                  j                  t        j
                  j                  | j                         d      }t        j                  |ft        j                  |ffD ]%  \  }}t        t              5   ||       d d d        ' y # 1 sw Y   2xY w)N.r   r   z.pyc
__cached____pycache__)__file__splithasattrr_   ospathjoindirnameremove
removedirsr   OSError)r   cachedpycacherh   files        r   _clean_up_cachern   n   s    __""3*1-6F")&,"?VVFggll277??6??;]KG))V,r}}g.FG g 	4L	 		 	s   =	CC	c                    	 t         j                  }dD ]+  }t               |   j                  ||   j                  k(  r+J  dD ]  }||   ||   k(  rJ  dD ].  }||   j                  |u sJ  ||   d       ||   d      k(  r.J  t
        j                  t         j                  k(  sJ t        t        t
              sJ t        j                  |d   j                  k(  sJ t        t        t              sJ t        t        t              sJ t        j                         |d   j                         k(  sJ t        t         u sJ y # t         $ r}t#        ||      f|_         d }~ww xY w)Nr   )r<   emptynames)r=   cubedr   personcal)r   r-   r)   r*   __globals__rA   r/   
isinstancers   rE   
issubclassrJ   r'   rt   rN   selfrefr2   r   r3   )mainglobals_copyr   	main_dictr   r   s         r   _test_objectsr|   x   s   %%	 > 	IC9S>**l3.?.H.HHHH	I + 	7CS>\#%6666	7 ( 	=CS>--:::!9S>!$(9S(9!(<<<<	=   H$5$5555&&)))zz\(377777*H555#/000||~e!4!=!=!????(""" !%k:<
s)   <E	 E	 2E	 CE	 		E+E&&E+c           	         i }| rddl m} ||d<   t        di |5 }	 t        j                  t
        | z  |        ddlm}m}m	} |j                  |t        dt        |       g|      }|rt        j                  |       t        t              5  t!        j"                  t
        | z         ddd       t%               }t        j                  ||        |j'                  d       t        j(                  |d	
        |j*                  d   t,        |j*                  |        ddd       y# 1 sw Y   xY w# t        t              5  t!        j"                  t
        | z         ddd       w # 1 sw Y   w xY wxY w# 1 sw Y   yxY w)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~   rP   dilldump_modulesession_filedill.tests.__main__r   r   r   callra   strexitr   rj   rd   rh   r   seekload_modulerU   r   )	r   extra_objectsr~   nsr   r   r   r   session_buffers	            r   test_session_mainr      s>   M!&g		'	' E2	6\K7[Q==GGVXy#k:JKSXGYEchhuo'" 6		,456 ![AA
;"		/"8RYYD!E E6 6'" 6		,456 6 6E EsT   E<A#D7 E<D+,A6E<+D4	0E<7E9E-	$	E9-E62E99E<<Fc                     ddl t        j                  t               _        j
                  j                         D  cg c]  } | j                  d      r|  }} t               }t        j                  |       |D ]  } j
                  | =  |j                  d       t        j                  |       t        fd|D              sJ j                  u sJ yc c} w )z8test dump/load_module() for a module other than __main__r   N__c              3   :   K   | ]  }|j                   v   y wrC   )r-   ).0r   r   s     r   	<genexpr>z%test_session_other.<locals>.<genexpr>   s     >#sfoo%>s   )test_classdefatexitregisterrn   rx   r-   keys
startswithr   r   r   r   r   all)r   dict_objectsr   r   s      @r   test_session_otherr      s    "
OOOV,FN#)??#7#7#9VCPTAUCVLVYN^V, !OOC ! ^V,>>>>>>>V### Ws   C"C"c                     ddl m}  d} | |      }d|_        t        j                  j                  |      }||ur<t        d|j                  |j                  |j                  t        j                         t               }t        j                  ||d       |j                         } | |      }t        j                  t        |      |	      }|J |j                   |k(  sJ |j                  dk(  sJ |t        j"                  j%                         vsJ |j'                  d       t        j                  t        |            }|j                   |k(  sJ |j                  dk(  sJ |t        j"                  j%                         vsJ y )
Nr   )
ModuleType__runtime__*   z:There are objects to save by referenece that shouldn't be:)rm   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      s]    G!GGI
,,
%
%g
.C
'J!!3#9#93;X;X::	 YN^GF!**,L !G!!',"7HJw&&&99??#++,,.... w|45Gw&&&99??#++,,....r   c                     dd l } dd l}dd l}dd l}|j	                  d      x}t
        j                  d<   |j                  j                  d      t        _
        | j                  |_        |j                  |_        t        j                  |_        t!               }t        j"                  ||d       |j%                  d       t        j&                  |      }t
        j                  d= t)        |j*                        h dk(  sJ y )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^Sd;
))N
#CJs%%& +   r   c                     t               5  t               } t        j                  |        dxaabt               j                         }| j                  d       t        j                  |       }|t               usJ t               |k(  sJ |d   dk(  sJ |d   t        k(  sJ |d   t        usJ |d   t        k7  sJ d|vsJ d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r*   r   rq   r<   yrp   )rP   r   r   r   r<   r   rp   r)   rT   r   load_module_asdictrq   )r   globals_state	main_varss      r   test_load_module_asdictr      s    	 $ ( 	A	(A++N;		)))yM)))$
222!U***!...~""")###)###)$ $ $s   B?CCFr   T):r   rd   r+   r   
contextlibr   ior   r   re   rf   rg   ra   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<   rp   rq   r=   rr   rA   rs   rJ   rt   rx   rP   rn   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D\K/
C2 CHHJ      " 0 / $ !   
a!	:x : 
& &  +:E4$& /D.$. z%($' " r   