o
    V۷i                     @   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d%d& Zed'kre  e  e  e  e  e  e  e  e  e  dS dS )(    )	getsourcegetname_wrap	getimport)
importable)IS_PYPYNi 
c                 C      | d S N    xr   r   L/home/ubuntu/vllm_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 getimport
)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
)builtinz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   s  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s1J t tjdddt ks>J t d dddksHJ t dddd	ksRJ t td
ddks\J t td
ddksfJ t d d
ddkspJ t td
ddkszJ t td
ddksJ 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dt ksJ t td
dddt ksJ t td
dddt ksJ t tjd
dddt ks(J t tjd
dddt ks7J t d d
dddksCJ t dd
ddd	ksOJ d S )NFsourcer/   r0   r4   zfrom %s import bar
r(   r%   r&   Tzdef add(x,y):
  return x+y
zsquared = lambda x:x**2
r!   r"   z!def bar(self, x):
  return x*x+x
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   r1   r   r   r9   r   r   r   r   r   test_importablec   s8   rA   c                  C   s  zdd l } | j}|g d}t|dddksJ t|ddd|j ks%J t|dddks/J t|ddd|j ks<J | j}|d}t|dddksMJ t|ddd	|j ksZJ t|dddksdJ t|ddd	|j ksqJ | j}|d}dd l}| ' |jd
t	d |jd
t
d t| dr| jtu rdnd}nd}W d    n1 sw   Y  t|ddd||f ksJ t|ddd|j|f ksJ t|ddd||f ksJ t|ddd|j|f ksJ W d S  ty   Y d S w )Nr   )   r
      Fr=   z)from numpy import array
array([1, 2, 3])
zfrom %s import array
Tz!from numpy import int64
int64(0)
zfrom %s import int64
ignore)categoryboolbool_zfrom numpy import %s
%s(False)
zfrom %s import %s
)numpyarrayr   r   int64rG   warningscatch_warningsfilterwarningsFutureWarningDeprecationWarninghasattrrF   ImportError)npr   r   rK   br   r   r   
test_numpy   s:   
$rT   c                   C   s   t tdddsJ d S )NTr=   zOimport dill
class Foo(object):
  def bar(self, x):
    return x*x+x
dill.loads()r   r9   
startswithr   r   r   r   test_foo   s   rV   c                  C   sN   dd l } |  }d|j_zt|dd}J  ty   J  ty&   Y d S w )Nr   z(abc' + print('foo')]) # T)force)abcABC	__class__r   r   	TypeErrorSyntaxError)rX   objr>   r   r   r   	test_safe   s   r^   __main__)dill.sourcer   r   r   r   r   
dill._dillr   r6   r8   r   r   r   objectr   r9   r   r1   r   _barr#   r$   r*   r.   r2   r<   rA   rT   rV   r^   r   r   r   r   r   <module>   sH    
