[GRASS-dev] How to improve flags related error message in pygrass module?

Nikos Alexandris nik at nikosalexandris.net
Tue Jan 16 23:12:15 PST 2018

* Markus Neteler <neteler at osgeo.org> [2018-01-15 14:42:29 +0100]:

>On Mon, Jan 15, 2018 at 1:38 PM, Nikos Alexandris
><nik at nikosalexandris.net> wrote:
>> * Markus Neteler <neteler at osgeo.org> [2018-01-15 11:12:46 +0100]:
>>> r.in_gdal(input="/home/user/geodaten/ASTGTM2_N50E007_dem.tif",output="dem_nrw",flags="e",overwrite="OVR")
>>> "/home/user/source/grass-7.4.svn/dist.x86_64-pc-linux-gnu/etc/python/grass/pygrass/modules/interface/module.py",
>>> line 705, in check
>>>    if flg and flg.suppress_required:
>>> TypeError: __nonzero__ should return bool or int, returned str
>> Even like that, the error message is informative.  It expects a boolean
>> (True or False) or an integer (say: 0 or 1). Instead a string was returned.
>Right. My point is that it does not say _which_ flag is wrong.
>My scope it to make it easy/obvious also for newcomers...

Flags are set/updated during the following piece of code (in `module.py`):

# set/update args
for param, arg in zip(self.params_list, args):
    param.value = arg
for key, val in kargs.items():
    if key in self.inputs:
        self.inputs[key].value = val
    elif key in self.outputs:
        self.outputs[key].value = val

    elif key in self.flags:

        # we need to add this, because some parameters (overwrite,
        # verbose and quiet) work like parameters
        self.flags[key].value = val
        raise ParameterError('%s is not a valid parameter.' % key)

and `check()`ing for required parameters, runs after when/if the `run_`
attribute is True.

Maybe adding a test before

self.flags[key].value = val

would help?  And report the `flag[key]` in case `val` is not one expected?

Maybe adding a specific test for the overwrite, verbose, quiet parameters, that
exist for every grass module?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20180117/20c9c51b/attachment.sig>

More information about the grass-dev mailing list