* Markus Neteler <[email protected]> [2018-01-15 14:42:29 +0100]:

On Mon, Jan 15, 2018 at 1:38 PM, Nikos Alexandris
<[email protected]> wrote:
* Markus Neteler <[email protected]> [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...

Markus


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
   else:
       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?

Nikos

Attachment: signature.asc
Description: PGP signature

_______________________________________________
grass-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to