o
    à8Va}  ã                   @   s$   d 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. é    ©Ú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                    sV   |sˆ| gˆ¢R i ˆ¤ŽS | j r| S |d8 }g }| jD ]
}| ˆ ||ƒ¡ q| j|Ž S )Né   )Zis_AtomÚargsÚappendÚ	__class__)ÚexprÚlevelZ_argsÚarg©Ú_user   ÚfuncÚkwargsr   ú?/usr/lib/python3/dist-packages/sympy/simplify/traversaltools.pyr      s   

zuse.<locals>._user   )r	   r   r
   r   r   r   r   r   Úuse   s   r   N)Ú__doc__Z
sympy.corer   r   r   r   r   r   Ú<module>   s    