3
���hf^ � @ s� d Z ddlZddlmZmZ ddlmZ ddlZddlm Z m
Z
mZmZm
Z
mZ ddlZddljjZddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% ddl&m'Z'm(Z( ddl)m*Z* ddl+j,j-j.Z.ee/e0f ee/e0f d �d
d�Z1ee/e0f ee/e0f d �dd
�Z2ee/e0f ee/e0f d �dd�Z3dd� Z4dd� Z5e5e3e2e1e'�fe0e0d�dd�Z6dd� Z7e7e8�Z9e7e0�Z:e;e<dd� dd� e=e�D ���Z>e>fdd�Z?e;e@dd� e>��ZAe?ejB�ZCe?ejD�ZEe?ejF�ZGe?ejH�ZIe?ejJ�ZKe?ejL�ZMe?ejN�ZOe?ejP�ZQe?ejR�ZSe?ejT�ZUe?ejV�ZWe?ejX�ZYe?ej�ZZe?ej[�Z\e;d d!d"g�Z]e;d#d$d%d&d'd(d)d*d+d,d-g�Z^eEeCB eWB eYB eZB e\B eIB e^B e] Z_eAe_ e]B Z`e_e`@ Zad.ea� �Zbea �s�tceb��e0e dL d0�d1d2�Zded3d4d5�Zeee0 e e
ee ge
ee f d6�d7d8�Zfd9d:� Zgeed;�Zhd<d=� Ziefe_�eieh�G d>d4� d4ejj���Zke;d?d@dAdBg�Zle;e#e" �Zmefe_elB eMe;d@dCdAdBdDg�B �G dEdF� dFek��Znefe_elB e;dGg�B �G dHdI� dIek��ZoG dJd"� d"�ZpeoendK�ZqdS )Mz
:func:`~pandas.eval` parsers.
� N)�partial�reduce)� iskeyword)�Callable�Optional�Set�Tuple�Type�TypeVar)�
_LOCAL_TAG�BinOp�Constant�Div�FuncNode�Op�Term�UnaryOp�UndefinedVariableError�_arith_ops_syms�_bool_ops_syms�
_cmp_ops_syms�_mathops�_reductions�_unary_ops_syms�is_term)�clean_backtick_quoted_toks�tokenize_string)�Scope)�tok�returnc C s | \}}||dkrdn|fS )a`
Rewrite the assignment operator for PyTables expressions that use ``=``
as a substitute for ``==``.
Parameters
----------
tok : tuple of int, str
ints correspond to the all caps constants in the tokenize module
Returns
-------
tuple of int, str
Either the input or token or the replacement values
�=z==� )r �toknum�tokvalr! r! �>/tmp/pip-build-5_djhm0z/pandas/pandas/core/computation/expr.py�_rewrite_assign& |