Example #1
0
def _check_engine(engine):
    """
    Make sure a valid engine is passed.

    Parameters
    ----------
    engine : str

    Raises
    ------
    KeyError
      * If an invalid engine is passed
    ImportError
      * If numexpr was requested but doesn't exist

    Returns
    -------
    string engine
    """
    from pandas.core.computation.check import _NUMEXPR_INSTALLED

    if engine is None:
        if _NUMEXPR_INSTALLED:
            engine = "numexpr"
        else:
            engine = "python"

    if engine not in _engines:
        valid = list(_engines.keys())
        raise KeyError(
            "Invalid engine {engine!r} passed, valid engines are"
            " {valid}".format(engine=engine, valid=valid)
        )

    # TODO: validate this in a more general way (thinking of future engines
    # that won't necessarily be import-able)
    # Could potentially be done on engine instantiation
    if engine == "numexpr":
        if not _NUMEXPR_INSTALLED:
            raise ImportError(
                "'numexpr' is not installed or an "
                "unsupported version. Cannot use "
                "engine='numexpr' for query/eval "
                "if 'numexpr' is not installed"
            )

    return engine
Example #2
0
File: eval.py Project: Axik/pandas
def _check_engine(engine):
    """Make sure a valid engine is passed.

    Parameters
    ----------
    engine : str

    Raises
    ------
    KeyError
      * If an invalid engine is passed
    ImportError
      * If numexpr was requested but doesn't exist

    Returns
    -------
    string engine

    """
    from pandas.core.computation.check import _NUMEXPR_INSTALLED

    if engine is None:
        if _NUMEXPR_INSTALLED:
            engine = 'numexpr'
        else:
            engine = 'python'

    if engine not in _engines:
        valid = list(_engines.keys())
        raise KeyError('Invalid engine {engine!r} passed, valid engines are'
                       ' {valid}'.format(engine=engine, valid=valid))

    # TODO: validate this in a more general way (thinking of future engines
    # that won't necessarily be import-able)
    # Could potentially be done on engine instantiation
    if engine == 'numexpr':
        if not _NUMEXPR_INSTALLED:
            raise ImportError("'numexpr' is not installed or an "
                              "unsupported version. Cannot use "
                              "engine='numexpr' for query/eval "
                              "if 'numexpr' is not installed")

    return engine
Example #3
0
def _check_engine(engine: Optional[str]) -> str:
    """
    Make sure a valid engine is passed.

    Parameters
    ----------
    engine : str
        String to validate.

    Raises
    ------
    KeyError
      * If an invalid engine is passed.
    ImportError
      * If numexpr was requested but doesn't exist.

    Returns
    -------
    str
        Engine name.
    """
    from pandas.core.computation.check import _NUMEXPR_INSTALLED

    if engine is None:
        engine = "numexpr" if _NUMEXPR_INSTALLED else "python"

    if engine not in _engines:
        valid_engines = list(_engines.keys())
        raise KeyError(
            f"Invalid engine '{engine}' passed, valid engines are {valid_engines}"
        )

    # TODO: validate this in a more general way (thinking of future engines
    # that won't necessarily be import-able)
    # Could potentially be done on engine instantiation
    if engine == "numexpr":
        if not _NUMEXPR_INSTALLED:
            raise ImportError(
                "'numexpr' is not installed or an unsupported version. Cannot use "
                "engine='numexpr' for query/eval if 'numexpr' is not installed"
            )

    return engine