Skip to content

Conversation

@cgohlke
Copy link
Contributor

@cgohlke cgohlke commented Feb 3, 2014

Python 3.4 created a "NameConstant AST class to represent None, True, and False literals" (http://docs.python.org/3.4/whatsnew/changelog.html).
Pandas-0.13.1.win-amd64-py3.4 fails a few tests with AttributeError: '...ExprVisitor' object has no attribute 'visit_NameConstant'.
The suggested change fixes those test errors but I am not sure that it is the best/correct fix.

====================================================================== ERROR: test_scalar_unary (pandas.computation.tests.test_eval.TestEvalNumexprPandas) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 678, in test_scalar_unary pd.eval('~True', parser=self.parser, engine=self.engine), ~True) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 545, in visit_UnaryOp operand = self.visit(node.operand) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PandasExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_scalar_unary (pandas.computation.tests.test_eval.TestEvalNumexprPython) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 678, in test_scalar_unary pd.eval('~True', parser=self.parser, engine=self.engine), ~True) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 545, in visit_UnaryOp operand = self.visit(node.operand) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PythonExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_scalar_unary (pandas.computation.tests.test_eval.TestEvalPythonPandas) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 678, in test_scalar_unary pd.eval('~True', parser=self.parser, engine=self.engine), ~True) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 545, in visit_UnaryOp operand = self.visit(node.operand) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PandasExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_scalar_unary (pandas.computation.tests.test_eval.TestEvalPythonPython) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 678, in test_scalar_unary pd.eval('~True', parser=self.parser, engine=self.engine), ~True) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 545, in visit_UnaryOp operand = self.visit(node.operand) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PythonExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_bool_ops_with_constants (pandas.computation.tests.test_eval.TestOperationsNumExprPandas) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1086, in test_bool_ops_with_constants res = self.eval(ex) File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1046, in eval return pd.eval(*args, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 716, in visit_BoolOp return reduce(visitor, operands) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 708, in visitor lhs = self._try_visit_binop(x) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 704, in _try_visit_binop return self.visit(bop) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PandasExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_simple_bool_ops (pandas.computation.tests.test_eval.TestOperationsNumExprPandas) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1078, in test_simple_bool_ops res = self.eval(ex) File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1046, in eval return pd.eval(*args, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 716, in visit_BoolOp return reduce(visitor, operands) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 708, in visitor lhs = self._try_visit_binop(x) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 704, in _try_visit_binop return self.visit(bop) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PandasExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_bool_ops_with_constants (pandas.computation.tests.test_eval.TestOperationsNumExprPython) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1389, in test_bool_ops_with_constants res = self.eval(ex) File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1046, in eval return pd.eval(*args, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 536, in visit_BinOp op, op_class, left, right = self._possibly_transform_eq_ne(node) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 492, in _possibly_transform_eq_ne left = self.visit(node.left, side='left') File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PythonExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_bool_ops_with_constants (pandas.computation.tests.test_eval.TestOperationsPythonPandas) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1086, in test_bool_ops_with_constants res = self.eval(ex) File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1046, in eval return pd.eval(*args, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 716, in visit_BoolOp return reduce(visitor, operands) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 708, in visitor lhs = self._try_visit_binop(x) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 704, in _try_visit_binop return self.visit(bop) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PandasExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_simple_bool_ops (pandas.computation.tests.test_eval.TestOperationsPythonPandas) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1078, in test_simple_bool_ops res = self.eval(ex) File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1046, in eval return pd.eval(*args, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 716, in visit_BoolOp return reduce(visitor, operands) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 708, in visitor lhs = self._try_visit_binop(x) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 704, in _try_visit_binop return self.visit(bop) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PandasExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_bool_ops_with_constants (pandas.computation.tests.test_eval.TestOperationsPythonPython) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1389, in test_bool_ops_with_constants res = self.eval(ex) File "X:\Python34\lib\site-packages\pandas\computation\tests\test_eval.py", line 1046, in eval return pd.eval(*args, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\eval.py", line 207, in eval truediv=truediv) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 762, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 536, in visit_BinOp op, op_class, left, right = self._possibly_transform_eq_ne(node) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 492, in _possibly_transform_eq_ne left = self.visit(node.left, side='left') File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'PythonExprVisitor' object has no attribute 'visit_NameConstant' ====================================================================== ERROR: test_select_dtypes (pandas.io.tests.test_pytables.TestHDFStore) ---------------------------------------------------------------------- Traceback (most recent call last): File "X:\Python34\lib\site-packages\pandas\io\tests\test_pytables.py", line 2939, in test_select_dtypes result = store.select('df', Term('boolv == %s' % str(v)), columns = ['A','boolv']) File "X:\Python34\lib\site-packages\pandas\io\pytables.py", line 664, in select auto_close=auto_close).get_values() File "X:\Python34\lib\site-packages\pandas\io\pytables.py", line 1338, in get_values results = self.func(self.start, self.stop) File "X:\Python34\lib\site-packages\pandas\io\pytables.py", line 653, in func columns=columns, **kwargs) File "X:\Python34\lib\site-packages\pandas\io\pytables.py", line 3788, in read if not self.read_axes(where=where, **kwargs): File "X:\Python34\lib\site-packages\pandas\io\pytables.py", line 3047, in read_axes self.selection = Selection(self, where=where, **kwargs) File "X:\Python34\lib\site-packages\pandas\io\pytables.py", line 4263, in __init__ self.terms = self.generate(where) File "X:\Python34\lib\site-packages\pandas\io\pytables.py", line 4276, in generate return Expr(where, queryables=q, encoding=self.table.encoding) File "X:\Python34\lib\site-packages\pandas\computation\pytables.py", line 518, in __init__ self.terms = self.parse() File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 781, in parse return self._visitor.visit(self.expr) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 455, in visit_Module return self.visit(expr, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 458, in visit_Expr return self.visit(node.value, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 689, in visit_Compare return self.visit(binop) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 449, in visit return visitor(node, **kwargs) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 536, in visit_BinOp op, op_class, left, right = self._possibly_transform_eq_ne(node) File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 494, in _possibly_transform_eq_ne right = self.visit(node.right, side='right') File "X:\Python34\lib\site-packages\pandas\computation\expr.py", line 448, in visit visitor = getattr(self, method) AttributeError: 'ExprVisitor' object has no attribute 'visit_NameConstant' 
@jreback
Copy link
Contributor

jreback commented Feb 3, 2014

awesome backwards compat from python!

@jreback
Copy link
Contributor

jreback commented Feb 3, 2014

@cpcloud assinging you!

@cpcloud
Copy link
Member

cpcloud commented Feb 3, 2014

cool .. sounds like fun

@ghost
Copy link

ghost commented Feb 4, 2014

@cgohlke , Thanks for reporting this and previous py3.4 errors.
I've added a windows 3.4 build to our CI setup, we should now catch
these problems earlier on (i.e not immediately after a release) in the future.

@jreback
Copy link
Contributor

jreback commented Feb 4, 2014

this works fine....NameConstant must be defined in < 3.4.....

jreback added a commit that referenced this pull request Feb 4, 2014
ENH: add support for Python 3.4 ast.NameConstant
@jreback jreback merged commit 9c3a007 into pandas-dev:master Feb 4, 2014
@jreback
Copy link
Contributor

jreback commented Feb 4, 2014

@y-p ok...so looks like 3.4 on win is passing...

so need to decide if should add another build or 2 on travis

now that they are so fast, not sure this would be a burden

@ghost
Copy link

ghost commented Feb 4, 2014

I agree, at 5-6 minutes, doubling up should be ok. Have at it.

@jreback
Copy link
Contributor

jreback commented Feb 4, 2014

silly me...travis doesn't support python 3.4 yet!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug IO HDF5 read_hdf, HDFStore

3 participants