[GRASS-SVN] r38885 - grass/trunk/lib/python

svn_grass at osgeo.org svn_grass at osgeo.org
Thu Aug 27 13:43:27 EDT 2009


Author: martinl
Date: 2009-08-27 13:43:27 -0400 (Thu, 27 Aug 2009)
New Revision: 38885

Modified:
   grass/trunk/lib/python/core.py
   grass/trunk/lib/python/db.py
   grass/trunk/lib/python/grasspythonlib.dox
   grass/trunk/lib/python/raster.py
   grass/trunk/lib/python/vector.py
Log:
pythonlib: set_fatal_exit() added (used in wxGUI to call error()
instead of fatal()


Modified: grass/trunk/lib/python/core.py
===================================================================
--- grass/trunk/lib/python/core.py	2009-08-27 10:52:53 UTC (rev 38884)
+++ grass/trunk/lib/python/core.py	2009-08-27 17:43:27 UTC (rev 38885)
@@ -54,6 +54,8 @@
 PIPE = subprocess.PIPE
 STDOUT = subprocess.STDOUT
 
+fatal_exit = True # abort on fatal()
+
 def call(*args, **kwargs):
     return Popen(*args, **kwargs).wait()
 
@@ -274,8 +276,6 @@
 
     @param msg message to be displayed
     @param flag flags (given as string)
-
-    @return g.message's exit code
     """
     run_command("g.message", flags = flag, message = msg)
 
@@ -284,8 +284,6 @@
 
     @param msg message to be displayed
     @param debug debug level (0-5)
-
-    @return g.message's exit code
     """
     run_command("g.message", flags = 'd', message = msg, debug = debug)
     
@@ -293,8 +291,6 @@
     """!Display a verbose message using g.message -v
     
     @param msg message to be displayed
-
-    @return g.message's exit code
     """
     message(msg, flag = 'v')
 
@@ -302,39 +298,42 @@
     """!Display an informational message using g.message -i
 
     @param msg message to be displayed
-
-    @return g.message's exit code
     """
     message(msg, flag = 'i')
 
 def warning(msg):
     """!Display a warning message using g.message -w
 
-    @param msg message to be displayed
-
-    @return g.message's exit code
+    @param msg warning message to be displayed
     """
     message(msg, flag = 'w')
 
 def error(msg):
     """!Display an error message using g.message -e
 
-    @param msg message to be displayed
-
-    @return g.message's exit code
+    @param msg error message to be displayed
     """
     message(msg, flag = 'e')
 
 def fatal(msg):
     """!Display an error message using g.message -e, then abort
 
-    @param msg message to be displayed
-
-    @return g.message's exit code
+    @param msg error message to be displayed
     """
     error(msg)
-    sys.exit(1)
+    
+    global fatal_exit
+    if fatal_exit:
+        sys.exit(1)
+    
+def set_fatal_exit(exit = True):
+    """!Set fatal_exit variable
 
+    @param exit True to abort on fatal() otherwise just error message
+    is printed"""
+    global fatal_exit
+    fatal_exit = exit
+    
 # interface to g.parser
 
 def _parse_opts(lines):

Modified: grass/trunk/lib/python/db.py
===================================================================
--- grass/trunk/lib/python/db.py	2009-08-27 10:52:53 UTC (rev 38884)
+++ grass/trunk/lib/python/db.py	2009-08-27 17:43:27 UTC (rev 38885)
@@ -7,9 +7,8 @@
 Usage:
 
 @code
-from grass.script import core, db as grass
+from grass.script import db as grass
 
-grass.parser()
 grass.db_describe(table)
 ...
 @endcode
@@ -23,6 +22,8 @@
 @author Martin Landa <landa.martin gmail.com>
 """
 
+import tempfile as pytempfile # conflict with core.tempfile
+
 from core import *
 
 def db_describe(table, **args):
@@ -44,7 +45,8 @@
     """
     s = read_command('db.describe', flags = 'c', table = table, **args)
     if not s:
-	return None
+	grass.fatal(_("Unable to describe table <%s>") % table)
+    
     cols = []
     result = {}
     for l in s.splitlines():
@@ -59,6 +61,7 @@
 	else:
 	    result[key] = f[1:]
     result['cols'] = cols
+    
     return result
 
 # run "db.connect -p" and parse output
@@ -76,3 +79,30 @@
     """
     s = read_command('db.connect', flags = 'p')
     return parse_key_val(s, sep = ':')
+
+def db_select(table, sql, file = False, **args):
+    """!Perform SQL select statement
+
+    @param table table name
+    @param sql   SQL select statement (string or file)
+    @param file  True if sql is filename
+    @param args  see db.select arguments
+    """
+    ofile = pytempfile.NamedTemporaryFile(mode = 'w+b')
+    if not file:
+        ret = run_command('db.select', quiet = True,
+                          flags = 'c',
+                          table = table,
+                          sql = sql,
+                          output = ofile.name)
+    else: # -> sql is file
+        ret = run_command('db.select', quiet = True,
+                          flags = 'c',
+                          table = table,
+                          input = sql,
+                          output = ofile.name)
+    
+    if ret != 0:
+        fatal(_("Fetching data from table <%s> failed") % table)
+        
+    return ofile.readlines()

Modified: grass/trunk/lib/python/grasspythonlib.dox
===================================================================
--- grass/trunk/lib/python/grasspythonlib.dox	2009-08-27 10:52:53 UTC (rev 38884)
+++ grass/trunk/lib/python/grasspythonlib.dox	2009-08-27 17:43:27 UTC (rev 38885)
@@ -11,19 +11,19 @@
 
 See code in:
 
- - core.py
- - db.py
- - raster.py
- - vector.py
+- core.py
+- db.py
+- raster.py
+- vector.py
 
-<h2>Table of content</h2>
+<b>Table of content</b>
 
- - \subpage scripting
- - \subpage modules
-  - \subpage core
-  - \subpage db
-  - \subpage raster
-  - \subpage vector
+- \subpage scripting
+- \subpage modules
+ - \subpage core
+ - \subpage db
+ - \subpage raster
+ - \subpage vector
 
 \section scripting GRASS scripting tasks for Python provided by "grass.script"
 
@@ -201,6 +201,8 @@
 
  - db_describe()
 
+ - db_select()
+
 \section raster Raster
 
 Interface for <tt>r.*</tt> modules.

Modified: grass/trunk/lib/python/raster.py
===================================================================
--- grass/trunk/lib/python/raster.py	2009-08-27 10:52:53 UTC (rev 38884)
+++ grass/trunk/lib/python/raster.py	2009-08-27 17:43:27 UTC (rev 38885)
@@ -7,9 +7,8 @@
 Usage:
 
 @code
-from grass.script import core, raster as grass
+from grass.script import raster as grass
 
-grass.parser()
 grass.raster_history(map)
 ...
 @endcode

Modified: grass/trunk/lib/python/vector.py
===================================================================
--- grass/trunk/lib/python/vector.py	2009-08-27 10:52:53 UTC (rev 38884)
+++ grass/trunk/lib/python/vector.py	2009-08-27 17:43:27 UTC (rev 38885)
@@ -7,9 +7,8 @@
 Usage:
 
 @code
-from grass.script import core, vector as grass
+from grass.script import vector as grass
 
-grass.parser()
 grass.vector_db(map)
 ...
 @endcode



More information about the grass-commit mailing list