123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # -*- coding: utf-8 -*-
- 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()
- 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/grass79/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')
|