from typing import Any

from sympy.core.function import UndefinedFunction
from sympy.utilities.decorator import doctest_depends_on

__doctest_requires__ = ...
MATH_DEFAULT: dict[str, Any] = ...
MPMATH_DEFAULT: dict[str, Any] = ...
NUMPY_DEFAULT: dict[str, Any] = ...
SCIPY_DEFAULT: dict[str, Any] = ...
CUPY_DEFAULT: dict[str, Any] = ...
JAX_DEFAULT: dict[str, Any] = ...
TENSORFLOW_DEFAULT: dict[str, Any] = ...
SYMPY_DEFAULT: dict[str, Any] = ...
NUMEXPR_DEFAULT: dict[str, Any] = ...
MATH = ...
MPMATH = ...
NUMPY = ...
SCIPY = ...
CUPY = ...
JAX = ...
TENSORFLOW = ...
SYMPY = ...
NUMEXPR = ...
MATH_TRANSLATIONS = ...
MPMATH_TRANSLATIONS = ...
NUMPY_TRANSLATIONS: dict[str, str] = ...
SCIPY_TRANSLATIONS: dict[str, str] = ...
CUPY_TRANSLATIONS: dict[str, str] = ...
JAX_TRANSLATIONS: dict[str, str] = ...
TENSORFLOW_TRANSLATIONS: dict[str, str] = ...
NUMEXPR_TRANSLATIONS: dict[str, str] = ...
MODULES = ...
_lambdify_generated_counter = ...

@doctest_depends_on(modules=("numpy", "scipy", "tensorflow"), python_version=(3,))
def lambdify(args, expr, modules=..., printer=..., use_imps=..., dummify=..., cse=..., docstring_limit=...): ...
def lambdastr(args, expr, printer=..., dummify=...) -> str: ...

class _EvaluatorPrinter:
    def __init__(self, printer=..., dummify=...) -> None: ...
    def doprint(self, funcname, args, expr, *, cses=...) -> str: ...

class _TensorflowEvaluatorPrinter(_EvaluatorPrinter): ...

def implemented_function(symfunc, implementation) -> type[UndefinedFunction] | UndefinedFunction: ...
