B
    ™‘[®  ã               @   s4   d Z ddlmZmZ ddlmZ ddi fdd„ZdS )z@Tools for applying functions to specified parts of expressions. é    )Úprint_functionÚdivision)Úsympify© c                s    ‡ ‡‡‡fdd„‰ ˆ t | ƒ|ƒS )a8  
    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                sX   |sˆ| fˆžˆŽS | j r| S |d8 }g }x| jD ]}| ˆ ||ƒ¡ q2W | j|Ž S d S )Né   )Zis_AtomÚargsÚappendÚ	__class__)ÚexprÚlevelZ_argsÚarg)Ú_user   ÚfuncÚkwargsr   ú<lib/python3.7/site-packages/sympy/simplify/traversaltools.pyr      s    zuse.<locals>._use)r   )r
   r   r   r   r   r   )r   r   r   r   r   Úuse   s    r   N)Ú__doc__Z
__future__r   r   Z
sympy.corer   r   r   r   r   r   Ú<module>   s   