o
    N©Zh  γ                   @   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 dS )&ι    )Ϊ	getsourceΪgetnameΪ_wrapΪlikely_import)Ϊgetimportable)ΪIS_PYPYNi± 
c                 C   σ   | d S ©Nι   © ©Ϊxr   r   ϊM/var/www/html/lang_env/lib/python3.10/site-packages/dill/tests/test_source.pyΪ<lambda>   σ    r   c                 C   s   t | |  S ©N)Ϊfr   r   r   r   Ϊg   s    r   c                 C   s   dd }|| |  S )Nc                 S   s   | S r   r   r   r   r   r   r      s    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   r   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J t tdksJ t tdksJ ttdks J ttdks(J ttdks0J ttddks:J ttdd	ksDJ ttdd
ksNJ ttdksVJ ttdks^J t tdksfJ t tdksnJ 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   r   r   r   r   r   r   r   r   r   r   Ϊtest_getsource'   s   r#   c                   C   s   t t dksJ d S )Nz&from dill.source import likely_import
)r   r   r   r   r   Ϊtest_itself9   s   r$   c                   C   s   t tdksJ t ddksJ t ddksJ t tdddks"J t ddddks,J t ddddks6J t d dks>J t d dddksHJ d S )	Nzpow
ιd   ϊ100
TzTrue
©Zexplicitzfrom builtins import pow
ϊNone
)r   Ϊpowr   r   r   r   Ϊtest_builtin=   s   r*   c                  C   s    ddl m}  t| dksJ d S )Nr   ©Ϊsinzfrom math import sin
)Ϊmathr,   r   r+   r   r   r   Ϊtest_importedJ   s   r.   c                   C   s,   t tdt ks
J t tdt ksJ d S )Nϊfrom %s import add
ϊfrom %s import squared
)r   r   r   Ϊsquaredr   r   r   r   Ϊtest_dynamicO   s   r2   c                  C   sx   ddl m}  d}tstjtkr|nd}|  }t| |ksJ t||ks&J ttdt ks0J tt	dt ks:J d S )Nr   )ΪBytesIOzfrom _io import BytesIO
zfrom io import BytesIO
ϊfrom %s import Foo
)
Ϊior3   r   ΪsysΪ
hexversionΪPY310br   r   r   Ϊ_foo)ΪStringIOr   r   Ϊsr   r   r   Ϊtest_classesU   s   r<   c                   C   sv  t tdt ks
J t tdt ksJ t tdt ksJ t tjdt ks)J t tjdt ks4J t d dks<J t ddksDJ t tdd	d
ksNJ t tdd	dksXJ t d dd	dksbJ t tdd	dkslJ t tdd	dksvJ t tjdd	dksJ t tjdd	dt ksJ t tjddddt ksJ t tddddt ks©J t tddddt ksΆJ t tddddksΑJ t tddddksΜJ t d ddddksΧJ t dddddksβJ t tdddt ksξJ t tdddt ksϊJ t tdddt ksJ t tjdddt ksJ t tjdddt ks#J t d dddks.J t ddddks9J d S )Nr/   r0   r4   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   r1   r   r   r9   r   r   r   r   r   Ϊtest_importablec   s8   rA   c                  C   s   z9ddl m}  | g d’}t|dksJ t| d| j ks J t|dddks*J t| ddd| j ks7J W d S  tyC   Y d S w )Nr   )Ϊarray)ι   r
   ι   z)from numpy import array
array([1, 2, 3])
zfrom %s import array
Fr=   )ΪnumpyrB   r   r   ΪImportError)rB   r   r   r   r   Ϊ
test_numpy   s    rG   c                   C   s   t tdd d‘sJ d S )NFr=   zOimport dill
class Foo(object):
  def bar(self, x):
    return x*x+x
dill.loads()r   r9   Ϊ
startswithr   r   r   r   Ϊtest_foo   s   rI   Ϊ__main__)Zdill.sourcer   r   r   r   r   Z
dill._dillr   r6   r8   r   r   r   Ϊobjectr   r9   r   r1   r   Z_barr#   r$   r*   r.   r2   r<   rA   rG   rI   r   r   r   r   r   Ϊ<module>   sD    
χ