U
    ใว-eV  ใ                	   @   sT  d dl Z d dlmZ d dlZd.ddZG dd deZG dd	 d	eZG d
d deZdd Z	dd Z
G dd deZG dd deZdd ZG dd deZG dd deZdd ZG dd deZdd Zd d! Zd"d# Zd$d% ad&d' Zd(d) Zd*d+ Zed,krPe ก : e d-ก e	  e  e  e  e  e  e  W 5 Q R X dS )/้    N)ฺpartialFc                 C   sv   |rbzt j| ||dW S  tk
r*   Y nX td| f t dก t j| ||d}t dก |S t j| ||dS d S )Nฉฺbyrefฺrecursez7Copy of %s with byref=True should have given a warning!ฺignoreฺerror)ฺdillฺcopyฺ	ExceptionฺAssertionErrorฺwarningsฺsimplefilter)ฺobjr   r   ฺvalฉ r   ๚Z/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/dill/tests/test_recursive.pyr	      s    

r	   c                       s   e Zd Z fddZ  ZS )ฺobj1c                    s   t t|  ก  d S ฉN)ฺsuperr   ฺ__init__ฉฺselfฉฺ	__class__r   r   r      s    zobj1.__init__ฉฺ__name__ฺ
__module__ฺ__qualname__r   ฺ__classcell__r   r   r   r   r      s   r   c                       s   e Zd Z fddZ  ZS )ฺobj2c                    s   t t|  ก  d S r   )r   r   r   r   r   r   r   r   #   s    zobj2.__init__r   r   r   r   r   r   "   s   r   c                   @   s   e Zd ZeZdd ZdS )ฺobj3c                 C   s   t  t | ก ก  d S r   )r    ฺsuper_r   r   r   r   r   r   (   s    zobj3.__init__N)r   r   r   r   r!   r   r   r   r   r   r    &   s   r    c                   C   sึ   t t ddstt t ddds&tt t dds8tt t sFtt t ddsXtt t dddsltt t dds~tt t stt t ddstt t dddsฒtt t ddsฤtt t sาtd S ฉNT)r   r   ฉr   )r	   r   r   r   r    r   r   r   r   ฺ
test_super,   s    r$   c                 C   s   d S r   r   )ฺmodelr   r   r   ฺget_trigger=   s    r&   c                   @   s   e Zd Zdd ZdS )ฺMachinec                 C   s(   t  | _tt| | _tt| j| j_d S r   )ฺModelฺchildr   r&   ฺtriggerr   r   r   r   r   A   s    zMachine.__init__N)r   r   r   r   r   r   r   r   r'   @   s   r'   c                   @   s   e Zd ZdS )r(   N)r   r   r   r   r   r   r   r(   F   s   r(   c                   C   sJ   t t ddstt t ddds&tt t dds8tt t sFtd S r"   )r	   r'   r   r   r   r   r   ฺtest_partialK   s    r+   c                   @   s   e Zd Zdd Zdd ZdS )ฺMachine2c                 C   s   t | j| | _d S r   )r   ฺmemberฺgor   r   r   r   r   S   s    zMachine2.__init__c                 C   s   d S r   r   )r   r%   r   r   r   r-   U   s    zMachine2.memberN)r   r   r   r   r-   r   r   r   r   r,   R   s   r,   c                       s   e Zd Z fddZ  ZS )ฺ
SubMachinec                    s   t t|  ก  d S r   )r   r/   r   r   r   r   r   r   Z   s    zSubMachine.__init__r   r   r   r   r   r/   Y   s   r/   c                   C   sJ   t t ddstt t ddds&tt t dds8tt t sFtd S r"   )r	   r/   r   r   r   r   r   ฺtest_partials^   s    r0   c                       s   e Zd Z fddZ  ZS )ฺobj4c                    s4   t t|  ก  |  G  fdddt | _d S )Nc                       s    e Zd Z fddZ  ZS )zobj4.__init__.<locals>.obj5c                    s   t |  ก  | _d S r   )r   r   ฺar   )r   r2   ฺobj5r   r   r   j   s    z$obj4.__init__.<locals>.obj5.__init__r   r   ฉr2   r3   r   r   r3   i   s   r3   )r   r1   r   ฺobjectฺbr   r   r4   r   r   f   s    zobj4.__init__r   r   r   r   r   r1   e   s   r1   c                  C   sd   t t stt t t กก} t| t| jjd j	ks>tt| j
t| j
jjd j	ks`td S )Nr   )r	   r1   r   r   ฺloadsฺdumpsฺtyper   ฺ__closure__ฺcell_contentsr6   )Z	obj4_copyr   r   r   ฺtest_circular_referencep   s    r<   c                      s    fdd  S )Nc                      s    S r   r   r   ฉฺgr   r   r>   x   s    zf.<locals>.gr   r   r   r=   r   ฺfw   s    r?   c                   C   s   t t std S r   )r	   r?   r   r   r   r   r   ฺtest_function_cells}   s    r@   c                 C   s4   | dkst | dkr| S t| d t| d  S d S )Nr   ้   ้   )r   ฺfib)ฺnr   r   r   rC      s    rC   c               	   C   sj   t tdd} t t}t}b| ddks*t||fD ].}z|d W n tk
rV   Y q2X tdq2|ad S )NTr#   ้   z&Function fib shouldn't have been found)r	   rC   r   r
   )Zfib2Zfib3Zfib4Z_fibr   r   r   ฺtest_recursive_function   s    
rF   c                     s   i   fdd} |  d< | S )Nc                      s    S r   r   r   ฉฺdr   r   r>      s    z(collection_function_recursion.<locals>.gr>   r   r=   r   rG   r   ฺcollection_function_recursion   s    rI   c                  C   s    t t } |  d | kstd S )Nr>   )r	   rI   r   r=   r   r   r   ฺ"test_collection_function_recursionฃ   s    
rJ   ฺ__main__r   )FF)r   ฺ	functoolsr   r   r	   r5   r   r   r    r$   r&   r'   r(   r+   r,   r/   r0   r1   r<   r?   r@   rC   rF   rI   rJ   r   ฺcatch_warningsr   r   r   r   r   ฺ<module>   s@   



