diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2013-05-29 06:57:00 -0700 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2013-05-29 06:57:00 -0700 |
commit | 1f11f22ad71da9cb95b541be01fbfb4eed6d3d5b (patch) | |
tree | f10eb8ad1be497527d89cedda70f3c2ee6253717 /numpy | |
parent | aa1cfce920ecef6b7c8a4a70dbd3c04c4037dceb (diff) | |
parent | fc4ade26312bd66474834aa0bee42265e7e15353 (diff) | |
download | numpy-1f11f22ad71da9cb95b541be01fbfb4eed6d3d5b.tar.gz |
Merge pull request #3358 from leonnnn/matrix-typeerror
ENH: Fix SyntaxError when matrix() is called with invalid string
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/matrixlib/defmatrix.py | 13 | ||||
-rw-r--r-- | numpy/matrixlib/tests/test_defmatrix.py | 4 |
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]]) |