[GRASS-dev] pyGRASS problem with r.sun

Hi,

(svn trunk)

r.sun in pyGRASS is somehow confused with data type for time option.

Time option does work well as a float input directly in the shell.
from pyGRASS it expects an integer.

time=10.3321830777
Traceback (most recent call last):
  File "./python-pygrass.py", line 293, in <module>
    r.sun(elevin="dem",albedo=b_albedo,glob_rad=b_rnet,lin=3.0,day=b_doy,time=float(local_time),quiet=QIET,overwrite=OVR)
  File "/usr/local/grass-7.0.svn/etc/python/grass/pygrass/modules/interface/module.py",
line 183, in __call__
    self.inputs[key].value = val
  File "/usr/local/grass-7.0.svn/etc/python/grass/pygrass/modules/interface/parameter.py",
line 98, in _set_value
    (self.name, self.values))
ValueError: The Parameter <time>, must be one of: [0, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24]

--
----

Hi Yann,

On Sunday 23 Jun 2013 11:15:46 Yann Chemin wrote:

Hi,

(svn trunk)

r.sun in pyGRASS is somehow confused with data type for time option.

Time option does work well as a float input directly in the shell.
from pyGRASS it expects an integer.

time=10.3321830777
Traceback (most recent call last):
  File "./python-pygrass.py", line 293, in <module>
   
r.sun(elevin="dem",albedo=b_albedo,glob_rad=b_rnet,lin=3.0,day=b_doy,time=f
loat(local_time),quiet=QIET,overwrite=OVR) File
"/usr/local/grass-7.0.svn/etc/python/grass/pygrass/modules/interface/module
.py", line 183, in __call__
    self.inputs[key].value = val
  File
"/usr/local/grass-7.0.svn/etc/python/grass/pygrass/modules/interface/parame
ter.py", line 98, in _set_value
    (self.name, self.values))
ValueError: The Parameter <time>, must be one of: [0, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24]

Good point! :slight_smile:

should be fixed in r56885

{{{

from pygrass.modules.shortcuts import raster as r
sun = r.sun
sun.inputs.time = 10.5 # it's fine
sun.inputs.time = 110.5 # raise an exception

Traceback (most recent call last):
  File "<ipython-input-15-1259aa696035>", line 1, in <module>
    sun.inputs.time = 110.5
  File "pygrass/modules/interface/typedict.py", line 25, in __setattr__
    self[key].value = value
  File "pygrass/modules/interface/parameter.py", line 99, in _set_value
    self.values[-1]))
ValueError: The Parameter <time>, must be: 0<=value<=24

}}}