ó
¡¼™\c           @  sB   d  Z  d d l m Z m Z d d l m Z d d i  d „ Z d S(   s@   Tools for applying functions to specified parts of expressions. iÿÿÿÿ(   t   print_functiont   division(   t   sympifyi    c           s+   ‡  ‡ ‡ ‡ f d †  ‰  ˆ  t  |  ƒ | ƒ S(   s8  
    Use ``func`` to transform ``expr`` at the given level.

    Examples
    ========

    >>> from sympy import use, expand
    >>> from sympy.abc import x, y

    >>> f = (x + y)**2*x + 1

    >>> use(f, expand, level=2)
    x*(x**2 + 2*x*y + y**2) + 1
    >>> expand(f)
    x**3 + 2*x**2*y + x*y**2 + 1

    c           sn   | s ˆ |  ˆ ˆ Ž S|  j  r# |  S| d 8} g  } x' |  j D] } | j ˆ  | | ƒ ƒ q= W|  j | Œ  Sd  S(   Ni   (   t   is_Atomt   argst   appendt	   __class__(   t   exprt   levelt   _argst   arg(   t   _useR   t   funct   kwargs(    s<   lib/python2.7/site-packages/sympy/simplify/traversaltools.pyR      s    	
(   R   (   R   R   R   R   R   (    (   R   R   R   R   s<   lib/python2.7/site-packages/sympy/simplify/traversaltools.pyt   use   s    N(    (   t   __doc__t
   __future__R    R   t
   sympy.coreR   R   (    (    (    s<   lib/python2.7/site-packages/sympy/simplify/traversaltools.pyt   <module>   s   