Mercurial > pytave
view @py/py.m @ 423:6b9de18b4bdd
Eliminate remaining custom exception handling in favor of Octave errors
* oct-py-error.cc, oct-py-error.h (pytave::error_python_exception): New function
to generate an Octave error from an active Python error condition, based on
pytave::fetch_exception_message.
* oct-py-eval.cc (pytave::py_call_function, pytave::py_run_string_safe): Use it.
* oct-py-types.cc (pytave::make_py_dict): Likewise.
* oct-py-util.cc (pytave::py_objstore): Likewise.
* pycall.cc (Fpycall): Remove exception handling logic.
* pyeval.cc (Fpyeval): Likewise.
* pyexec.cc (Fpyexec): Likewise.
* exceptions.cc, exceptions.h: Delete.
* Makefile.am (COMMON_SOURCE_FILES, PYTAVE_HEADER_FILES): Remove them.
author | Mike Miller <mtmiller@octave.org> |
---|---|
date | Thu, 04 May 2017 21:15:07 -0700 |
parents | 087e7bc3697f |
children |
line wrap: on
line source
## Copyright (C) 2016 Mike Miller ## ## This file is part of Pytave. ## ## Pytave is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or (at ## your option) any later version. ## ## Pytave is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Pytave; see the file COPYING. If not, see ## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- ## @deftypefn {} {} py ## @deftypefnx {} {} py.@var{pyname} ## Get the value of a Python object or call a Python function. ## @end deftypefn function p = py () p = class (struct (), "py"); endfunction %!assert (py.math.sqrt (2), sqrt (2)) %!assert (ischar (char (py.sys.version))) %!test %! if (double (py.sys.hexversion) >= 0x03000000) %! assert (isobject (py.int (0))) %! else %! assert (py.int (0), int64 (0)) %! endif %!test %! if (double (py.sys.hexversion) < 0x03000000) %! assert (py.int (2147483647), int64 (2147483647)) %! endif %!test %! if (double (py.sys.hexversion) < 0x03000000) %! assert (isobject (py.long (0))) %! endif %!test %! if (double (py.sys.hexversion) >= 0x03000000) %! assert (isobject (py.int (2^100))) %! else %! assert (isobject (py.long (2^100))) %! endif ## Cannot use '@' to make a handle to a Python function %!xtest %! fn = @py.math.abs; %! assert (fn (-3), 3)