o
    ~]c                     @   s  d dl mZmZmZmZ d dl mZ d dlZejd  dk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re  e  e  e  e  e  e  e  e  dS dS )%    )	getsourcegetname_wraplikely_import)getimportableN   c                 C      | d S N    xr   r   O/var/www/Datamplify/venv/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 rd} nd} 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s5J t rAtddddksGJ d
|  sGJ td dksOJ td dddksYJ d S )Nbuiltins__builtin__zpow
d   100
TzTrue
explicitzfrom %s import pow
zfrom %s import True
None
)PY3r   pow)builtinr   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
)mathr1   r   r0   r   r   r   test_importedL   s   r3   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_dynamicQ   s   r7   c                  C   s   zddl m }  d}|}W n ty   ddlm}  d}d}Y nw |  }t| |ks+J t||ks3J ttdt ks=J ttdt ksGJ d S )Nr   )StringIOzfrom StringIO import StringIO
)BytesIOzfrom io import BytesIO
zfrom _io import BytesIO
from %s import Foo
)r8   ImportErrorior9   r   r   r   _foo)r8   r   r   sr   r   r   test_classesW   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sJ t tjdd	dt ksJ t tjddddt ksJ t tddddt ksJ t tddddt ksJ t tddddksJ t tddddksJ t d ddddksJ t dddddksJ t tdddt ksJ t tdddt ksJ 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 )Nr4   r5   r:   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)aliasrA   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   r6   r   r   r=   r   r   r   r   r   test_importablej   s8   rD   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
   r   z)from numpy import array
array([1, 2, 3])
zfrom %s import array
Fr@   )numpyrE   r   r   r;   )rE   r   r   r   r   
test_numpy   s    rH   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   r=   
startswithr   r   r   r   test_foo   s   rJ   __main__)dill.sourcer   r   r   r   r   sysversion_infor,   r   r   r   objectr   r=   r   r6   r   _barr#   r$   r/   r3   r7   r?   rD   rH   rJ   r   r   r   r   r   <module>   sB    
