[GRASS-dev] [GRASS GIS] #2410: Python ScriptError
GRASS GIS
trac at osgeo.org
Mon Sep 8 02:24:04 PDT 2014
#2410: Python ScriptError
-------------------------+--------------------------------------------------
Reporter: martinl | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.1.0
Component: Python | Version: svn-trunk
Keywords: ScriptError | Platform: Unspecified
Cpu: Unspecified |
-------------------------+--------------------------------------------------
Comment(by zarch):
Replying to [ticket:2410 martinl]:
> In trunk Python Scripting Library is used !ScriptError from PyGRASS
source:grass/trunk/lib/python/script/core.py#L36. It was introduced in
r61187 by zarch. In relbr70 is still used it's own implementation of
`ScriptError`
source:grass/branches/releasebranch_7_0/lib/python/script/core.py#L70
which defines attribute `value`. This attribute is accessed on many places
of Python Scripting Library or wxGUI, eg.
>
> {{{
> except ScriptError as e:
> self.errorMsg = e.value
> }}}
>
> Since `ScriptError` from PyGRASS doesn't have this attribute, it fails
with
>
> {{{
> File "/opt/src/grass_trunk/dist.x86_64-unknown-linux-
gnu/etc/python/grass/script/task.py", line 70, in __init__
> self.errorMsg = e.value
> AttributeError: 'ScriptError' object has no attribute 'value'
> }}}
Right I did this change, we can modify ScriptError back to:
{{{
class ScriptError(Exception):
def __init__(self, msg):
self.value = msg
def __str__(self):
return self.value
# --- or alternatively
class ScriptError(Exception):
@property
def value(self):
return self.args[0]
}}}
or change the e.value to e.args[0]
The value property seems to be used in:
{{{
$ grep --color=auto --exclude-dir={.svn,.git,.OBJ,locale,dist.x86_64
-unknown-linux-gnu} -IrnE "\se\.value"
lib/python/script/task.py:70: self.errorMsg = e.value
gui/wxpython/vnet/vnet_utils.py:80: e = e.value
gui/wxpython/vnet/vnet_utils.py:119: e = e.value
gui/wxpython/psmap/instructions.py:1546: GError(message =
e.value)
gui/wxpython/psmap/instructions.py:1584: GError(message
= e.value)
gui/wxpython/psmap/instructions.py:1717: GError(message =
e.value)
gui/wxpython/mapwin/buffered.py:821: GError(message = e.value)
gui/wxpython/location_wizard/wizard.py:2140: return e.value
gui/wxpython/core/settings.py:48: print >> sys.stderr, e.value
gui/wxpython/nviz/mapwindow.py:1355: message =
e.value)
gui/wxpython/nviz/mapwindow.py:1397: message =
e.value)
gui/wxpython/dbmgr/base.py:93: message = e.value)
gui/wxpython/dbmgr/base.py:1814: message =
_("Loading attribute data failed.\n\n%s") % e.value)
gui/wxpython/dbmgr/base.py:1839: message =
_("Loading attribute data failed.\n\n%s") % e.value)
gui/wxpython/wxplot/histogram.py:189: message = e.value)
gui/wxpython/wxplot/scatter.py:195: message = e.value)
}}}
Personally I think that we should change the ScriptError class definition.
--
Ticket URL: <http://trac.osgeo.org/grass/ticket/2410#comment:1>
GRASS GIS <http://grass.osgeo.org>
More information about the grass-dev
mailing list