o
    V۷i!                     @   s   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lZddlZddlm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 )#z
check that dill.source performs as expected with changes to locals in 3.13.0b1
see: https://github.com/python/cpython/issues/118888
c                 C      | d S N    xr   r   M/home/ubuntu/vllm_env/lib/python3.10/site-packages/dill/tests/test_sources.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       Nc                   C   sL  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jdks.J t tjdks8J t tjdksBJ t tjdksLJ t tjdksVJ t tj	dks`J t tj
dksjJ t tdkssJ t tdks|J t tjdksJ t tjdksJ t tj	dksJ t tj
dksJ d S )NTF)ds
isfrommainr   squaredr   _bartstmquad
double_add	quadratic	isdynamicr   r   r   r   test_isfrommain*   s"   r"   c                   C   sH   t tdsJ t tdsJ t tjdsJ t tjds"J d S )Nzf = lambda x: x**2
squared = lambda x:x**2
)r   _matchlambdar   r   r   r   r   r   r   test_matchlambda>   s   r%   c                  C   s\  t t\} }| | dksJ t tj\} }| | dksJ t t\} }| | dks.J t tj\} }| | dks>J t t\} }| | dksMJ t tj\} }| | dks]J t t\} }| | dkslJ t tj\} }| | dks|J t tj\} }| | dksJ t tj	\} }| | dksJ t tj
\} }| | dksJ d S )Nzdef add(x,y):
r#   zclass Bar:
zdef quad(a=1, b=1, c=0):
z    def func(*args, **kwds):
z  def dec(f):
)r   
findsourcer   r   r   r   r   r   r   r   r    )lineslinenor   r   r   test_findsourceE   s,   r)   c                   C   s  d ttd dksJ d ttjd dksJ d ttd dks+J d ttjd dks:J d ttd dksHJ d ttjd dksWJ d ttd dkseJ d ttjd dkstJ d ttj	d dksJ d ttj
d dksJ d tjtj
dd	d d
ksJ d tjtj
ddd dksJ d ttjd dksJ d tjtjddd dksJ d S )N r   zdef add(x,y):
  return x+y
r#   zclass Bar:
  pass
aM  def quad(a=1, b=1, c=0):
  inverted = [False]
  def invert():
    inverted[0] = not inverted[0]
  def dec(f):
    def func(*args, **kwds):
      x = f(*args, **kwds)
      if inverted[0]: x = -x
      return a*x**2 + b*x + c
    func.__wrapped__ = f
    func.invert = invert
    func.inverted = inverted
    return func
  return dec
zu  def dec(f):
    def func(*args,**kwds):
      fx = f(*args,**kwds)
      return a*fx**2 + b*fx + c
    return func
Tlstripzkdef dec(f):
  def func(*args,**kwds):
    fx = f(*args,**kwds)
    return a*fx**2 + b*fx + c
  return func
)	enclosingzdef quad_factory(a=1,b=1,c=0):
  def dec(f):
    def func(*args,**kwds):
      fx = f(*args,**kwds)
      return a*fx**2 + b*fx + c
    return func
  return dec
zs    def func(*args, **kwds):
      x = f(*args, **kwds)
      if inverted[0]: x = -x
      return a*x**2 + b*x + c
)joinr   getsourcelinesr   r   r   r   r   r   r   r    r   r   r   r   r   test_getsourcelines^   s   ""&r0   c                   C   sz   t dt tjd dt jtjddd ksJ t dt jtjddd ddt tjd ks;J d S )Nr*   r   Tr+   r   )r   outdentr.   r/   r   r    indentr   r   r   r   test_indento   s   :@r3   c                  C   s   i } t tjtddi |  t tjtjddi |  | d dd| d ddks)J t tjtddi |  t tjtjddi |  | d d| d dksNJ ttddttjddksaJ ttdttjdksrJ d S )Nrawaliasmod   r      )execr   
dumpsourcer   r   r   _wraplocalr   r   r   test_dumpsourcet   s    &&r?   c                   C   s  t tt jtdddksJ t tjt jtjdddks$J t tt jtdddks5J t tjt jtjdddksHJ t tt jtdddksYJ t tjt jtjdddkslJ t tj	t jtj	dddksJ t tdksJ t tjdksJ t tdksJ t tjdksJ t tdksJ t tjdksJ t tj	dksJ t tj
dksJ t tjd	ksJ d S )
NT)fqn.r   r   r   r   funcdec)r   
_namespacer   getnamesplitr   r   r   r   r   r   r    r   r   r   r   	test_name   s    "&"&"&&rG   c                  C   s4  i } t tjtddi |  t tjtjddi |  | d dd| d ddks)J t tjtddi |  t tjtjddi |  | d d| d dksNJ t tjtddi |  t tjtjddi |  t| d t| d ksuJ t tjtj	ddi |  | d  t
g dt	 t
g dksJ d S )Nr4   r5   r7   r8   r   r9   )r8   r   r9   )r:   r   	getimportr   r   r   r   rE   r   r   sumr=   r   r   r   test_getimport   s     2rJ   c                   C   sT  t jtddt tksJ t tt tksJ t jtddt tks(J t tt tks4J t jtddt tksBJ t tt tksNJ t tjt tjks\J t jtjddt tjkslJ t tjt tjkszJ t jtjddt tjksJ t tjt tjksJ t jtjddt tjksJ d S )NF)sourceT)r   
importabler   rH   	getsourcer   r   r   r   r   r   r   test_importable   s     $rN   __main__)__doc__r   r   r   objectr   _foor   r   r   r   test_sourcer   test_mixinsr   dill.sourcerK   r   r"   r%   r)   r0   r3   r?   rG   rJ   rN   r   r   r   r   r   <module>   sB   
