Source code for pygrass.modules.shortcuts
from __future__ import (
nested_scopes,
generators,
division,
absolute_import,
with_statement,
print_function,
unicode_literals,
)
import fnmatch
from grass.script.core import get_commands
from grass.pygrass.modules.interface import Module
_CMDS = list(get_commands()[0])
_CMDS.sort()
[docs]class MetaModule(object):
"""Example how to use MetaModule
>>> g = MetaModule('g')
>>> g_list = g.list
>>> g_list.name
'g.list'
>>> g_list.required
['type']
>>> g_list.inputs.type = 'raster'
>>> g_list.inputs.mapset = 'PERMANENT'
>>> g_list.stdout_ = -1
>>> g_list.run()
Module('g.list')
>>> g_list.outputs.stdout # doctest: +ELLIPSIS
'...basin...elevation...'
>>> r = MetaModule('r')
>>> what = r.what
>>> what.description
'Queries raster maps on their category values and category labels.'
>>> what.inputs.map = 'elevation'
>>> what.inputs.coordinates = [640000,220500] # doctest: +SKIP
>>> what.run() # doctest: +SKIP
>>> v = MetaModule('v')
>>> v.import # doctest: +ELLIPSIS
Traceback (most recent call last):
File ".../doctest.py", line 1315, in __run
compileflags, 1) in test.globs
File "<doctest grass.pygrass.modules.shortcuts.MetaModule[16]>", line 1
v.import
^
SyntaxError: invalid syntax
>>> v.import_
Module('v.import')
"""
def __init__(self, prefix, cls=None):
self.prefix = prefix
self.cls = cls if cls else Module
def __dir__(self):
return [
mod[(len(self.prefix) + 1) :].replace(".", "_")
for mod in fnmatch.filter(_CMDS, "%s.*" % self.prefix)
]
def __getattr__(self, name):
return self.cls("%s.%s" % (self.prefix, name.strip("_").replace("_", ".")))
# https://grass.osgeo.org/grass80/manuals/full_index.html
# [ d.* | db.* | g.* | i.* | m.* | ps.* | r.* | r3.* | t.* | v.* ]
#
# d.* display commands
# db.* database commands
# g.* general commands
# i.* imagery commands
# m.* miscellaneous commands
# ps.* postscript commands
# r.* raster commands
# r3.* 3D raster commands
# t.* temporal commands
# v.* vector commands
display = MetaModule("d")
database = MetaModule("db")
general = MetaModule("g")
imagery = MetaModule("i")
miscellaneous = MetaModule("m")
postscript = MetaModule("ps")
raster = MetaModule("r")
raster3d = MetaModule("r3")
temporal = MetaModule("t")
vector = MetaModule("v")