U
    -e                     @   s   d dl Z de jd< dd ZdddZed d	d
dd Zedd	dgZdddZed dd ddd Ze Z	dd Z
e
dd Zdd Zedkre  dS )    NTrecursec                    s,    fdd}fdd}fdd}||fS )Nc                      s    S N r   xr   W/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/dill/tests/test_mixins.pyzzz   s    zwtf.<locals>.zzzc                      s    S r   r   r   )yr   r   yyy   s    zwtf.<locals>.yyyc                      s    S r   r   r   )zr   r   xxx   s    zwtf.<locals>.xxxr   )r   r	   r   r   r
   r   r   )r   r	   r   r   wtf   s    r      c                    s*   dgfdd fdd}|S )NFc                      s    d   d< d S )Nr   r   r   )invertedr   r   invert   s    zquad.<locals>.invertc                    s*    fdd} |_ |_|_|S )Nc                     s0   | |}d r| } |d  |   S )Nr      r   )argskwdsr   )abcfr   r   r   func   s    
 zquad.<locals>.dec.<locals>.func)__wrapped__r   r   r   r   r   r   r   r   r   r   r   dec   s
    zquad.<locals>.decr   r   r   r   r   r   r   r   quad   s    	r   r   )r   r   c                  G   s   t | S r   )sum)r   r   r   r   
double_add'   s    r!      c                    s    fdd}|S )Nc                    s    fdd}|S )Nc                     s"   | |} |d  |   S Nr   r   r   r   fx)r   r   r   r   r   r   r   2   s    
z'quad_factory.<locals>.dec.<locals>.funcr   r   r   r   r   r   r   r   1   s    zquad_factory.<locals>.decr   r   r   r&   r   quad_factory0   s    r'      r&   c                 C   s   | d S )Nr   r   r   r   r   r   quadish9   s    r)   c                    s    fdd}|S )Nc                     s    | |}d| S r#   r   r$   r   r   r   innerB   s    
zdoubler.<locals>.innerr   )r   r*   r   r   r   doublerA   s    r+   c                 C   s   d|  S r#   r   r   r   r   r   	quadrupleH   s    r,   c            	      C   sN  t ddddt kstt   t ddddt ks8ttt } | ddddt ksZt| dddtksptt jd st   tj}tj	}|
|td dkst|
|td dkst|jtd	d
dt kst|jtd	d
dt kst|jtd	d
dt kst|jt d	d
dt ks2t|jtdd
dksJt|jtdd
}|dd\}}}}}|dks|tt|||gtdddgkst|jtdd
}|dd\}}}}|dkstt|||gtdddgkst|jt dd
}|dd\}}}}}}|dks$tt||||gtddddgksJtd S )Nr   r   r"   r   r   z8@quad_factory(a=0,b=4,c=0)
def quadish(x):
  return x+1
z(@doubler
def quadruple(x):
  return 2*x
F)sourcezfrom %s import quadish
zfrom %s import quadruple
zfrom %s import quadratic
zfrom %s import double_add
Tzdef doubler(f):
  def inner(*args, **kwds):
    fx = f(*args, **kwds)
    return 2*fx
  return inner

@doubler
def quadruple(x):
  return 2*x

r(   zdef 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

@quad_factory(a=0,b=4,c=0)
def quadish(x):
  return x+1
za = 0zc = 0zb = 4zl
def dec(f):
  def func(*args,**kwds):
    fx = f(*args,**kwds)
    return a*fx**2 + b*fx + c
  return func
za = 1zb = 1   a  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

@quad(a=0,b=2)
def double_add(*args):
  return sum(args)
zb = 2zinverted = [True])r!   r%   AssertionErrorr   dillcopyr   r   r.   detect	getsourceZfreevarsr)   r,   Z
importable__name__	quadraticsplitset)	Z_dZdsddresultr   r   r   _dr   r   r   test_mixinsM   s:    

""r>   __main__)r   r   r   )r   r   r   )r2   settingsr   r   r!   r    r%   r'   r)   r7   r+   r,   r>   r6   r   r   r   r   <module>	   s    





	

+