3
���h23 � @ s� d Z ddlZddlmZ ddlZddlmZ ddlmZ ddl m
Z
ddlmZm
Z
ddlmZ dd lmZ dd
lmZ ee ed�dd
�Zed�dd�Zdd� Zdd� Zed�dd�Zeeed�dd�Zddeddf dddf ee d�dd�ZdS ) z
Top level ``eval`` module.
� N)�Optional)�
no_default)�validate_bool_kwarg)�_engines)�Expr�_parsers)�tokenize_string)�ensure_scope)�pprint_thing)�engine�returnc C s` ddl m} | dkr |rdnd} | tkrHttj� �}td| � d|� ���| dkr\|s\td��| S ) a?
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.
r )�_NUMEXPR_INSTALLEDNZnumexpr�pythonzInvalid engine 'z' passed, valid engines are z~'numexpr' is not installed or an unsupported version. Cannot use engine='numexpr' for query/eval if 'numexpr' is not installed)Zpandas.core.computation.checkr
r �list�keys�KeyError�ImportError)r r
Z
valid_engines� r �>/tmp/pip-build-5_djhm0z/pandas/pandas/core/computation/eval.py�
_check_engine s r )�parserc C s$ | t kr td| � dt j� � ���dS )z�
Make sure a valid parser is passed.
Parameters
----------
parser : str
Raises
------
KeyError
* If an invalid parser is passed
zInvalid parser 'z' passed, valid parsers are N)r r r )r r r r �
_check_parserA s
r c C s> |