~ubuntu-branches/ubuntu/vivid/grass/vivid-proposed

« back to all changes in this revision

Viewing changes to lib/python/pygrass/modules/interface/typedict.py

  • Committer: Package Import Robot
  • Author(s): Bas Couwenberg
  • Date: 2015-02-20 23:12:08 UTC
  • mfrom: (8.2.6 experimental)
  • Revision ID: package-import@ubuntu.com-20150220231208-1u6qvqm84v430b10
Tags: 7.0.0-1~exp1
* New upstream release.
* Update python-ctypes-ternary.patch to use if/else instead of and/or.
* Drop check4dev patch, rely on upstream check.
* Add build dependency on libpq-dev to grass-dev for libpq-fe.h.
* Drop patches applied upstream, refresh remaining patches.
* Update symlinks for images switched from jpg to png.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# -*- coding: utf-8 -*-
 
2
"""
 
3
Created on Tue Apr  2 18:37:02 2013
 
4
 
 
5
@author: pietro
 
6
"""
 
7
from __future__ import (nested_scopes, generators, division, absolute_import,
 
8
                        with_statement, print_function, unicode_literals)
 
9
from copy import deepcopy
 
10
try:
 
11
    from collections import OrderedDict
 
12
except ImportError:
 
13
    from grass.pygrass.orderdict import OrderedDict
 
14
 
 
15
from grass.pygrass.utils import docstring_property
 
16
 
 
17
 
 
18
class TypeDict(OrderedDict):
 
19
    def __init__(self, dict_type, *args, **kargs):
 
20
        self._type = dict_type
 
21
        super(TypeDict, self).__init__(*args, **kargs)
 
22
 
 
23
    def __getattr__(self, key):
 
24
        if key in self:
 
25
            return self[key].value
 
26
        return OrderedDict.__getattr__(self, key)
 
27
 
 
28
    def __setattr__(self, key, value):
 
29
        if key in self:
 
30
            self[key].value = value
 
31
        else:
 
32
            OrderedDict.__setattr__(self, key, value)
 
33
 
 
34
    def __dir__(self):
 
35
        return self.keys()
 
36
 
 
37
    def __setitem__(self, key, value):
 
38
        if isinstance(value, self._type):
 
39
            super(TypeDict, self).__setitem__(key, value)
 
40
        else:
 
41
            str_err = 'The value: %r is not a %s instance.'
 
42
            raise TypeError(str_err % (value, self._type.__name__))
 
43
 
 
44
    @docstring_property(__doc__)
 
45
    def __doc__(self):
 
46
        return '\n'.join([self.__getitem__(obj).__doc__
 
47
                          for obj in self.__iter__()])
 
48
 
 
49
    def __call__(self):
 
50
        return [self.__getitem__(obj) for obj in self.__iter__()]
 
51
 
 
52
    def __deepcopy__(self, memo):
 
53
        obj = TypeDict(self._type)
 
54
        for k, v in self.items():
 
55
            obj[k] = deepcopy(v)
 
56
        return obj
 
57
 
 
58
    def used(self):
 
59
        key_dict = {}
 
60
        for key in self:
 
61
            if self.__getattr__(key):
 
62
                key_dict[key] = self.__getattr__(key)
 
63
        return key_dict
 
 
b'\\ No newline at end of file'