U
    -e'                     @   s  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	
ej	edZdd Zedkreejdkrejd	 d
krejd dkZejee dd dd Zee e  d dlZd dlZd dlmZ d dlm  mZ d dlZd dl m!a!m"Z"m#Z# d dl$m%Z& da'da(dddga)dd Z*dd Z+G dd da,t,t)d  t'a-G dd dt!a.t. a/ea0G dd  d Z1d!d" Z2e 3e2e d#d$ Z4d%d& Z5d'd( Z6d)d* Z7d+d, Z8d-d. Z9edkre5d/d0 e5d1d0 e6  e7  e8  e9  dS )2    N)suppress)BytesIOzsession-refimported-%s.pklc                 C   s<   dd l }|  d ddt| d }d|| f S )Nr   z[obj][]z(while testing (with refimported=%s):  %s)	traceback
format_exc
splitlinesreplacereprlstrip)errorobjrefimportedr   line r   X/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/dill/tests/test_session.py_error_line   s    $r   __main__      --child   Truemodulec              
   C   s   zdD ]}t  | jtjkstqdtjkr6dtjks:tdd l}dd l}dD ]"}t  | tjd j| ksNtqNtj	j
dkst| rtj	|j	ksttj|jkstW n4 tk
r } zt||| f|_ W 5 d }~X Y nX d S )Njsonurl	local_modsaxdomcalendarcmathr   )Calendarisleap)globals__name__sysmodulesAssertionErrorr"   r#   __dict__r   day_name
__module__complex_loglogr   args)r   r   r"   r#   r   r   r   r   test_modules!   s     r1   )r    )r$   r%   r,   )r/      ZAliceZBobZCarolc                 C   s   | d S )Nr   r   xr   r   r   squaredR       r5   c                 C   s   | d S )Nr   r   r3   r   r   r   <lambda>S   r6   r7   c                   @   s   e Zd Zdd ZdS )Personc                 C   s   || _ || _d S N)nameage)selfr:   r;   r   r   r   __init__U   s    zPerson.__init__N)r'   r-   __qualname__r=   r   r   r   r   r8   T   s   r8   c                   @   s   e Zd Zdd ZdS )CalendarSubclassc                 C   s   dd |   D S )Nc                 S   s   g | ]}t | qS r   )r,   ).0ir   r   r   
<listcomp>[   s     z-CalendarSubclass.weekdays.<locals>.<listcomp>)iterweekdaysr<   r   r   r   weekdaysZ   s    zCalendarSubclass.weekdaysN)r'   r-   r>   rE   r   r   r   r   r?   Y   s   r?   c                   @   s.   e Zd Ze  Zdd Zdd Zdd ZdS )TestNamespacec                 K   s
   || _ d S r9   )extra)r<   rG   r   r   r   r=   b   s    zTestNamespace.__init__c                 C   s6   t   | _t    t  | j t  | j | S r9   )r&   copybackupclearupdatetest_globalsrG   rD   r   r   r   	__enter__d   s
    
zTestNamespace.__enter__c                 G   s   t    t  | j d S r9   )r&   rJ   rK   rI   )r<   exc_infor   r   r   __exit__j   s    
zTestNamespace.__exit__N)	r'   r-   r>   r&   rH   rL   r=   rM   rO   r   r   r   r   rF   `   s   
rF   c              
   C   s   | j ddd d }t| dr&| jn|}tjtj| j d}tj|ftj	|ffD ]$\}}t
t || W 5 Q R X qVd S )N.r   r   z.pyc
__cached____pycache__)__file__splithasattrrQ   ospathjoindirnameremove
removedirsr   OSError)r   cachedpycacherZ   filer   r   r   _clean_up_cachen   s    
r`   c              
   C   s2  zt j}dD ]}t | j|| jkstqdD ]}|| || ks0tq0dD ]2}|| j|ksdt|| d|| dksNtqNtjt jksttt	tstt	j
|d j
ksttttsttttstt |d  ksttt kstW n6 tk
r, } zt|||f|_ W 5 d }~X Y nX d S )Nr   )r4   emptynames)r5   cubedr   personcal)r   r+   r&   r'   r*   __globals__r8   r-   
isinstancerd   r;   
issubclassr?   r$   re   rE   selfrefr   r0   )mainZglobals_copyr   Z	main_dictr   r   r   r   r   _test_objectsx   s&    rk   c           	      C   s   i }| rddl m} ||d< tf |}zRtj	t|  | d ddl
m}m}m} |j|tdt| g|d}|rxt | W 5 tt tt|   W 5 Q R X X t }tj	|| d |d tj|dd	 |jd
 t|j|  W 5 Q R X dS )zNtest dump/load_module() for __main__, both in this process and in a subprocessr   )flagsrl   r   )pythonshellspr   )ro   r   r   rk   N)r(   rl   rF   r   r\   rV   rZ   session_filedilldump_moduleZdill.tests.__main__rn   ro   rp   callrS   strexitr   seekload_modulerI   r   )	r   extra_objectsrl   nsrn   ro   rp   r   session_bufferr   r   r   test_session_main   s$     

r|   c                     s   ddl  tt    _dd  j D } t }t	|  | D ]} j|= qD|
d t|  t fdd| D st j kstdS )z8test dump/load_module() for a module other than __main__r   Nc                 S   s   g | ]}| d s|qS )__)
startswithr@   r   r   r   r   rB      s     
 z&test_session_other.<locals>.<listcomp>c                 3   s   | ]}| j kV  qd S r9   )r+   r   r   r   r   	<genexpr>   s     z%test_session_other.<locals>.<genexpr>)Ztest_classdefatexitregisterr`   ri   r+   keysr   rr   rs   rw   rx   allr*   )Zdict_objectsr{   r   r   r   r   test_session_other   s    

r   c                  C   s
  ddl m}  d}| |}d|_tj|}||k	rLtd|j|j|j	t
jd t }tj||dd | }| |}tjt||d	}|d kst|j|kst|jdkst|t
j kst|d tt|}|j|kst|jdkst|t
j kstd S )
Nr   )
ModuleTypeZ__runtime__*   z:There are objects to save by referenece that shouldn't be:)r_   T)r   r   r   )typesr   r4   rr   sessionZ_stash_modulesprintZ__dill_imported__dill_imported_asZ__dill_imported_top_levelr(   stderrr   rs   getvaluerx   r*   r'   r)   valuesrw   )r   modnameZruntimemodr{   Zsession_dump
return_valr   r   r   test_runtime_module   s4      
r   c                  C   s   dd l } dd l}dd l}dd l}|d }tjd< |jjddt	_
| j|_|j|_t	j
|_t }t	j||dd |d t	|}tjd= t|jddd	hkstd S )
Nr   Z__test__r   )max_workersTrm   )collectionsUserDictDict)typingAsyncContextManagerAsyncCM)rr   executorthread_exec)r   concurrent.futuresr   r   r   r(   r)   futuresThreadPoolExecutorrr   r   r   r   r   r   r   r   rs   rw   loadsetr   r*   )r   
concurrentr   r   r   r{   r   r   r   test_refimported_imported_as   s&    

r   c               	   C   s   t   t } t|  d aabt  }| 	d t
| }|t k	sNtt |ks\t|d dkslt|d tks|t|d tk	st|d tkstd|kstd|kstW 5 Q R X d S )Nr   r'   r   rb   r4   yra   )rF   r   rr   rs   r4   r   ra   r&   rH   rw   Zload_module_asdictr*   rb   )r{   Zglobals_stateZ	main_varsr   r   r   test_load_module_asdict   s     



r   Frm   T):r   rV   r(   r   
contextlibr   ior   rr   rW   rX   rY   rS   rq   r   r'   lenargvr   rx   r1   rv   r   urllibr   xmlr    Zxml.dom.minidomr!   ZminidomZtest_dictviewsr   r"   r$   r%   r,   r#   r/   r.   r4   ra   rb   r5   rc   r8   rd   r?   re   ri   rF   r`   r   rk   r|   r   r   r   r   r   r   r   r   <module>   s^   $	
"


