summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2013-05-29 06:57:00 -0700
committerCharles Harris <charlesr.harris@gmail.com>2013-05-29 06:57:00 -0700
commit1f11f22ad71da9cb95b541be01fbfb4eed6d3d5b (patch)
treef10eb8ad1be497527d89cedda70f3c2ee6253717
parentaa1cfce920ecef6b7c8a4a70dbd3c04c4037dceb (diff)
parentfc4ade26312bd66474834aa0bee42265e7e15353 (diff)
downloadnumpy-1f11f22ad71da9cb95b541be01fbfb4eed6d3d5b.tar.gz
Merge pull request #3358 from leonnnn/matrix-typeerror
ENH: Fix SyntaxError when matrix() is called with invalid string
-rw-r--r--numpy/matrixlib/defmatrix.py13
-rw-r--r--numpy/matrixlib/tests/test_defmatrix.py4
2 files changed, 15 insertions, 2 deletions
diff --git a/numpy/matrixlib/defmatrix.py b/numpy/matrixlib/defmatrix.py
index 080e83286..1ca835af2 100644
--- a/numpy/matrixlib/defmatrix.py
+++ b/numpy/matrixlib/defmatrix.py
@@ -19,7 +19,12 @@ if sys.version_info[0] >= 3:
return None
_table = _NumCharTable()
def _eval(astr):
- return eval(astr.translate(_table))
+ str_ = astr.translate(_table)
+ if not str_:
+ raise TypeError("Invalid data string supplied: " + astr)
+ else:
+ return eval(str_)
+
else:
_table = [None]*256
for k in range(256):
@@ -34,7 +39,11 @@ else:
del k
def _eval(astr):
- return eval(astr.translate(_table,_todelete))
+ str_ = astr.translate(_table,_todelete)
+ if not str_:
+ raise TypeError("Invalid data string supplied: " + astr)
+ else:
+ return eval(str_)
def _convert_from_string(data):
rows = data.split(';')
diff --git a/numpy/matrixlib/tests/test_defmatrix.py b/numpy/matrixlib/tests/test_defmatrix.py
index bc2b747e7..0cf284b64 100644
--- a/numpy/matrixlib/tests/test_defmatrix.py
+++ b/numpy/matrixlib/tests/test_defmatrix.py
@@ -31,6 +31,10 @@ class TestCtor(TestCase):
mvec = matrix(vec)
assert_(mvec.shape == (1,5))
+ def test_exceptions(self):
+ # Check for TypeError when called with invalid string data.
+ assert_raises(TypeError, matrix, "invalid")
+
def test_bmat_nondefault_str(self):
A = array([[1,2],[3,4]])
B = array([[5,6],[7,8]])