U
    γΗ-e  γ                   @   s  d dl mZmZmZmZ d dl mZ d dlmZ d dlZdZ	dd Z
dd	 Zd
d ZG dd deZe Zdd Zdd ZG dd dZe Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zed%kre  e  e  e  e  e  e  e  e  dS )&ι    )Ϊ	getsourceΪgetnameΪ_wrapΪlikely_import)Ϊgetimportable)ΪIS_PYPYNi± 
c                 C   s   | d S ©Nι   © ©Ϊxr
   r
   ϊW/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/dill/tests/test_source.pyΪ<lambda>   σ    r   c                 C   s   t | |  S ©N)Ϊfr   r
   r
   r   Ϊg   r   r   c                 C   s   dd }|| |  S )Nc                 S   s   | S r   r
   r   r
   r
   r   r      r   zh.<locals>.gr
   )r   r   r
   r
   r   Ϊh   s    r   c                   @   s   e Zd Zdd ZdS )ΪFooc                 C   s   || | S r   r
   )Ϊselfr   r
   r
   r   Ϊbar   s    zFoo.barN)Ϊ__name__Ϊ
__module__Ϊ__qualname__r   r
   r
   r
   r   r      s   r   c                 C   s   | | S r   r
   )r   Ϊyr
   r
   r   Ϊadd   s    r   c                 C   s   | d S r   r
   r   r
   r
   r   r       r   c                   @   s   e Zd ZdS )ΪBarN)r   r   r   r
   r
   r
   r   r   "   s   r   c                   C   sΰ   t tdkstt tdks tt tdks0tttdks@tttdksPtttdks`tttddksttttdd	kstttdd
kstttdks¬tttdksΌtt tdksΜtt tdksάtd S )Nzf = lambda x: x**2
zdef g(x): return f(x) - x
z1def h(x):
  def g(x): return x
  return g(x) - x
r   r   r   ι   ι   ι   r   r   r   ϊclass Bar:
  pass
ϊ8class Foo(object):
  def bar(self, x):
    return x*x+x
)	r   r   ΪAssertionErrorr   r   r   r   r   r   r
   r
   r
   r   Ϊtest_getsource'   s    r#   c                   C   s   t t dkstd S )Nz&from dill.source import likely_import
)r   r"   r
   r
   r
   r   Ϊtest_itself9   s    r$   c                   C   s   t tdkstt ddks tt ddks0tt tdddksDtt ddddksXtt ddddksltt d dks|tt d dddkstd S )	Nzpow
ιd   ϊ100
TzTrue
©Ϊexplicitzfrom builtins import pow
ϊNone
)r   Ϊpowr"   r
   r
   r
   r   Ϊtest_builtin=   s    r+   c                  C   s    ddl m}  t| dkstd S )Nr   ©Ϊsinzfrom math import sin
)Ϊmathr-   r   r"   r,   r
   r
   r   Ϊtest_importedJ   s    r/   c                   C   s,   t tdt kstt tdt ks(td S )Nϊfrom %s import add
ϊfrom %s import squared
)r   r   r   r"   Ϊsquaredr
   r
   r
   r   Ϊtest_dynamicO   s    r3   c                  C   sx   ddl m}  d}tstjtkr"|nd}|  }t| |ks<tt||ksLtttdt	 ks`ttt
dt	 ksttd S )Nr   )ΪBytesIOzfrom _io import BytesIO
zfrom io import BytesIO
ϊfrom %s import Foo
)Ϊior4   r   ΪsysΪ
hexversionΪPY310br   r"   r   r   Ϊ_foo)ΪStringIOr   r   Ϊsr
   r
   r   Ϊtest_classesU   s    r=   c                   C   s  t tdt kstt tdt ks(tt tdt ks<tt tjdt ksRtt tjdt kshtt d dksxtt ddkstt tdd	d
kstt tdd	dks°tt d dd	dksΔtt tdd	dksΨtt tdd	dksμtt tjdd	dkstt tjdd	dt ks tt tjddddt ks>tt tddddt ksZtt tddddt ksvtt tddddkstt tddddks¦tt d ddddksΎtt dddddksΦtt tdddt ksπtt tdddt ks
tt tdddt ks$tt tjdddt ks@tt tjdddt ks\tt d dddksrtt ddddkstd S )Nr0   r1   r5   zfrom %s import bar
r)   r%   r&   F©Ϊbynamezdef add(x,y):
  return x+y
zsquared = lambda x:x**2
r    r!   z!def bar(self, x):
  return x*x+x
TΪmemo)Ϊaliasr?   zfrom %s import bar as memo
zfrom %s import Foo as memo
zfrom %s import squared as memo
zmemo = squared = lambda x:x**2
z'def add(x,y):
  return x+y

memo = add
zmemo = None
zmemo = 100
r'   )	r   r   r   r"   r2   r   r   r:   r   r
   r
   r
   r   Ϊtest_importablec   s8    rB   c                  C   s   zrddl m}  | dddg}t|dks,tt| d| j ksBtt|dd	dksVtt| dd	d| j ksptW n tk
r   Y nX d S )
Nr   )Ϊarrayι   r	   ι   z)from numpy import array
array([1, 2, 3])
zfrom %s import array
Fr>   )ΪnumpyrC   r   r"   r   ΪImportError)rC   r   r
   r
   r   Ϊ
test_numpy   s     rH   c                   C   s   t tdd d‘std S )NFr>   zOimport dill
class Foo(object):
  def bar(self, x):
    return x*x+x
dill.loads()r   r:   Ϊ
startswithr"   r
   r
   r
   r   Ϊtest_foo   s    rJ   Ϊ__main__)Zdill.sourcer   r   r   r   r   Z
dill._dillr   r7   r9   r   r   r   Ϊobjectr   r:   r   r2   r   Z_barr#   r$   r+   r/   r3   r=   rB   rH   rJ   r   r
   r
   r
   r   Ϊ<module>	   s@    
