[GRASS-dev] grass.info versus print

Paulo van Breugel p.vanbreugel at gmail.com
Thu Apr 14 07:25:44 PDT 2016



On 14-04-16 16:20, Vaclav Petras wrote:
>
> On Thu, Apr 14, 2016 at 9:55 AM, Paulo van Breugel 
> <p.vanbreugel at gmail.com <mailto:p.vanbreugel at gmail.com>> wrote:
>
>>     I would have to go through the individual examples but sometimes
>>     it might be be clear what is a message to inform user about
>>     something and what is a text output of the module. A rule of
>>     thumb can be that modules which output maps, (usually) don't do
>>     text output, so they shouldn't use print().
>
>     In this case (r.vif) the output is not a map, but a list of
>     values, i.e., text output (see below). Based on the guidelines, I
>     would assume I should use print()?
>
>
> Then print() is the right thing. I would recommend finding a similar 
> module and see its behavior. For example, r.univar will give you human 
> readable report and also parseable output (in this case by 
> grass.script.parse_command()). Both are written to standard output 
> (the g.message wrappers use standard error output).

OK, will do that
>
>
>     All variables
>
>     ----------------------------------------
>
>     variable                           vif      sqrtvif
>
>     2000_01_precip at climate_1970_2012       2.30     1.52
>
>     2000_03_tempmean at climate_1970_2012    24.95     5.00
>
>     2000_11_precip at climate_1970_2012       3.54     1.88
>
>     2001_02_precip at climate_1970_2012       4.55     2.13
>
>     2001_04_tempmean at climate_1970_2012    25.01     5.00
>
>     Variable '2001_04_tempmean at climate_1970_2012' removed
>
>     ----------------------------------------
>
>     variable                           vif      sqrtvif
>
>     2000_01_precip at climate_1970_2012       2.30     1.52
>
>     2000_03_tempmean at climate_1970_2012     2.19     1.48
>
>     2000_11_precip at climate_1970_2012       3.48     1.87
>
>     2001_02_precip at climate_1970_2012       4.54     2.13
>
>     Final selected variables are: 2000_01_precip, 2000_03_tempmean, 2000_11_precip, 2001_02_precip
>
>     with as maximum VIF: 5.69787583189
>
>
>
> This definitively looks like something from r.report or r.info 
> <http://r.info>.
>
>>         Perhaps the most important thing is that one should avoid
>>         mixing the two, which is something that maybe could go
>>         somewhere in the wiki?
>>
>>
>>     Feel free to extent either wiki or guidelines if you think it is
>>     not clear enough.
>
>     I wouldn't mind doing so, but I probably should understand better
>     myself what exactly the issue is with using both print() and
>     grass.info <http://grass.info>() in one script. Based on what I
>     read in the guidelines, I am not clear whether using both is
>     against the guidelines as such,
>
>
> You can use both in one script. The difference is what you use them 
> for. For example, a lot of modules will tell which map was created 
> (this is done through g.message or its C equivalents), while g.region 
> -p will use standard output. Some cases are unclear, for example 
> v.in.lidar uses standard output (fprintf(stdout,...)) to tell how many 
> points imported. G_message() might be more appropriate here because it 
> is an message to the user while the output is the vector map. If 
> G_message() would be used, this output could be silenced by --quiet.
>
>     but technically it seems it can cause problems as you explained
>     (and I experienced).
>
>
> They are mostly related to syncing of stdout and strerr streams which 
> is more challenging for the GUI (and may need some fixing there).

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20160414/8cb807c0/attachment.html>


More information about the grass-dev mailing list