[GRASS-SVN] r61898 - in grass/trunk: lib/python/script scripts/db.droptable

svn_grass at osgeo.org svn_grass at osgeo.org
Sat Sep 13 10:12:53 PDT 2014


Author: lucadelu
Date: 2014-09-13 10:12:53 -0700 (Sat, 13 Sep 2014)
New Revision: 61898

Modified:
   grass/trunk/lib/python/script/db.py
   grass/trunk/scripts/db.droptable/db.droptable.py
Log:
python db: fix output of db_table_in_vector and changed db.droptable.py behaviour; some pep8 and doctest fix

Modified: grass/trunk/lib/python/script/db.py
===================================================================
--- grass/trunk/lib/python/script/db.py	2014-09-13 17:07:10 UTC (rev 61897)
+++ grass/trunk/lib/python/script/db.py	2014-09-13 17:12:53 UTC (rev 61898)
@@ -1,4 +1,4 @@
-"""!@package grass.script.db
+"""@package grass.script.db
 
 @brief GRASS Python scripting module (database functions)
 
@@ -6,13 +6,13 @@
 
 Usage:
 
- at code
-from grass.script import db as grass
+::
 
-grass.db_describe(table)
-...
- at endcode
+    from grass.script import db as grass
 
+    grass.db_describe(table)
+    ...
+
 (C) 2008-2009, 2012 by the GRASS Development Team
 This program is free software under the GNU General Public
 License (>=v2). Read the file COPYING that comes with GRASS
@@ -22,33 +22,26 @@
 @author Martin Landa <landa.martin gmail.com>
 """
 
-import tempfile as pytempfile # conflict with core.tempfile
-
 from core import *
 from utils import try_remove
 
 
 def db_describe(table, **args):
-    """!Return the list of columns for a database table
+    """Return the list of columns for a database table
     (interface to `db.describe -c'). Example:
 
-    \code
-    >>> grass.db_describe('lakes')
-    {'nrows': 15279, 'cols': [['cat', 'INTEGER', '11'], ['AREA', 'DOUBLE PRECISION', '20'],
-    ['PERIMETER', 'DOUBLE PRECISION', '20'], ['FULL_HYDRO', 'DOUBLE PRECISION', '20'],
-    ['FULL_HYDR2', 'DOUBLE PRECISION', '20'], ['FTYPE', 'CHARACTER', '24'],
-    ['FCODE', 'INTEGER', '11'], ['NAME', 'CHARACTER', '99']], 'ncols': 8}
-    \endcode
+    >>> db_describe('firestations')  # doctest: +ELLIPSIS
+    {'nrows': 71, 'cols': [['cat', 'INTEGER', '20'], ... 'ncols': 22}
 
-    @param table table name
-    @param args
+    :param str table: table name
+    :param list args:
 
-    @return parsed module output
+    :return: parsed module output
     """
-    s = read_command('db.describe', flags = 'c', table = table, **args)
+    s = read_command('db.describe', flags='c', table=table, **args)
     if not s:
         fatal(_("Unable to describe table <%s>") % table)
-    
+
     cols = []
     result = {}
     for l in s.splitlines():
@@ -63,77 +56,67 @@
         else:
             result[key] = f[1:]
     result['cols'] = cols
-    
+
     return result
 
-# run "db.connect -g" and parse output
 
 def db_table_exist(table, **args):
-    """!Check if table exists.
+    """Check if table exists.
 
     If no driver or database are given, then default settings is used
     (check db_connection()).
 
-    @param table table name
-    @param driver DB driver 
-    @param database DB to check
+    >>> db_table_exist('firestations')
+    True
 
-    @return True for success, False otherwise
+    :param str table: table name
+    :param args:
+
+    :return: True for success, False otherwise
     """
     nuldev = file(os.devnull, 'w+')
-    ret = run_command('db.describe', flags = 'c', table = table,
-                      stdout = nuldev, stderr = nuldev, **args)
+    ret = run_command('db.describe', flags='c', table=table,
+                      stdout=nuldev, stderr=nuldev, **args)
     nuldev.close()
-    
+
     if ret == 0:
         return True
     return False
 
+
 def db_connection():
-    """!Return the current database connection parameters
+    """Return the current database connection parameters
     (interface to `db.connect -g'). Example:
 
-    \code
-    >>> grass.db_connection()
-    {'group': 'x', 'schema': '', 'driver': 'dbf', 'database': '$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/'}
-    \endcode
+    >>> db_connection()
+    {'group': '', 'schema': '', 'driver': 'sqlite', 'database': '$GISDBASE/$LOCATION_NAME/$MAPSET/sqlite/sqlite.db'}
 
-    @return parsed output of db.connect
+    :return: parsed output of db.connect
     """
-    return parse_command('db.connect', flags = 'g')
+    return parse_command('db.connect', flags='g')
 
-def db_select(sql = None, filename = None, table = None, **args):
-    """!Perform SQL select statement
 
+def db_select(sql=None, filename=None, table=None, **args):
+    """Perform SQL select statement
+
     Note: one of <em>sql</em>, <em>filename</em>, or <em>table</em>
     arguments must be provided.
-    
+
     Examples:
-    
-    \code
-    grass.db_select(sql = 'SELECT cat,CAMPUS FROM busstopsall WHERE cat < 4')
 
+    >>> db_select(sql = 'SELECT cat,CITY FROM firestations WHERE cat < 4')
     (('1', 'Vet School'), ('2', 'West'), ('3', 'North'))
-    \endcode
-    
-    \code
-     grass.db_select(filename = '/path/to/sql/file')
-    \endcode
 
-    Simplyfied usage 
-    
-    \code
-    grass.db_select(table = 'busstopsall')
-    \endcode
+    Simplyfied usage (it performs <tt>SELECT * FROM busstopsall</tt>.)
 
-    performs <tt>SELECT * FROM busstopsall</tt>.
+    >>> db_select(table = 'firestations')
 
-    @param sql SQL statement to perform (or None)
-    @param filename name of file with SQL statements (or None)
-    @param table name of table to query (or None)
-    @param args  see \gmod{db.select} arguments
+    :param str sql: SQL statement to perform (or None)
+    :param str filename: name of file with SQL statements (or None)
+    :param str table: name of table to query (or None)
+    :param str args:  see \gmod{db.select} arguments
     """
-    fname = tempfile(create = False)
+    fname = tempfile(create=False)
     if sql:
         args['sql'] = sql
     elif filename:
@@ -143,35 +126,37 @@
     else:
         fatal(_("Programmer error: '%(sql)s', '%(filename)s', or '%(table)s' must be provided") %
               {'sql': 'sql', 'filename': 'filename', 'table': 'table'} )
-    
+
     if 'sep' not in args:
         args['sep'] = '|'
-    
-    ret = run_command('db.select', quiet = True,
-                      flags = 'c',
-                      output = fname,
-                      **args)
-    
+
+    ret = run_command('db.select', quiet=True, flags='c',
+                      output=fname, **args)
+
     if ret != 0:
         fatal(_("Fetching data failed"))
-    
+
     ofile = open(fname)
     result = map(lambda x: tuple(x.rstrip(os.linesep).split(args['sep'])),
                  ofile.readlines())
     ofile.close()
     try_remove(fname)
-        
+
     return tuple(result)
 
 
 def db_table_in_vector(table):
     """Return the name of vector connected to the table.
-       It returns False if no vectors are connected to the table.
+    It returns None if no vectors are connected to the table.
 
-       Example
+    >>> db_table_in_vector('geology')
+    ['geology at PERMANENT']
+    >>> db_table_in_vector('geologies')
 
-       @params table name of table to query
 
+    :param str table: name of table to query
+
+
     """
     from vector import vector_db
     nuldev = file(os.devnull, 'w')
@@ -184,4 +169,7 @@
             if f['table'] == table:
                 used.append(vect)
                 break
-    return used
+    if len(used) > 0:
+        return used
+    else:
+        return None

Modified: grass/trunk/scripts/db.droptable/db.droptable.py
===================================================================
--- grass/trunk/scripts/db.droptable/db.droptable.py	2014-09-13 17:07:10 UTC (rev 61897)
+++ grass/trunk/scripts/db.droptable/db.droptable.py	2014-09-13 17:12:53 UTC (rev 61898)
@@ -75,7 +75,7 @@
 
     # check if table is used somewhere (connected to vector map)
     used = grass.db.db_table_in_vector(table)
-    if len(used) > 0:
+    if used:
         grass.warning(_("Deleting table <%s> which is attached to following map(s):") % table)
         for vect in used:
             grass.warning("%s" % vect)



More information about the grass-commit mailing list