rtags.py
branchstable
changeset 1866 118c7528d08f
parent 1859 b068abd45a1c
child 1977 606923dff11b
equal deleted inserted replaced
1865:62d3726ad8cb 1866:118c7528d08f
    22     allowing to set tags using wildcard (eg '*') as subject type / object type
    22     allowing to set tags using wildcard (eg '*') as subject type / object type
    23 
    23 
    24     This class associates a single tag to each key.
    24     This class associates a single tag to each key.
    25     """
    25     """
    26     _allowed_values = None
    26     _allowed_values = None
    27     def __init__(self, initfunc=None, allowed_values=None):
    27     def __init__(self, name=None, initfunc=None, allowed_values=None):
       
    28         self._name = name or '<unknown>'
    28         self._tagdefs = {}
    29         self._tagdefs = {}
    29         if allowed_values is not None:
    30         if allowed_values is not None:
    30             self._allowed_values = allowed_values
    31             self._allowed_values = allowed_values
    31         self._initfunc = initfunc
    32         self._initfunc = initfunc
    32         register_rtag(self)
    33         register_rtag(self)
    33 
    34 
    34     def __repr__(self):
    35     def __repr__(self):
    35         return repr(self._tagdefs)
    36         return '%s: %s' % (self._name, repr(self._tagdefs))
    36 
    37 
    37     # dict compat
    38     # dict compat
    38     def __getitem__(self, key):
    39     def __getitem__(self, key):
    39         return self.get(*key)
    40         return self.get(*key)
    40     __contains__ = __getitem__
    41     __contains__ = __getitem__
    93         #if isinstance(key, basestring):
    94         #if isinstance(key, basestring):
    94         #    stype, rtype, otype = key.split()
    95         #    stype, rtype, otype = key.split()
    95         #else:
    96         #else:
    96         stype, rtype, otype, tagged = [str(k) for k in key]
    97         stype, rtype, otype, tagged = [str(k) for k in key]
    97         if self._allowed_values is not None:
    98         if self._allowed_values is not None:
    98             assert tag in self._allowed_values, '%r is not an allowed tag' % tag
    99             assert tag in self._allowed_values, \
       
   100                    '%r is not an allowed tag (should be in %s)' % (
       
   101                 tag, self._allowed_values)
    99         self._tagdefs[(rtype, tagged, stype, otype)] = tag
   102         self._tagdefs[(rtype, tagged, stype, otype)] = tag
   100 
   103 
   101     # rtag runtime api ########################################################
   104     # rtag runtime api ########################################################
   102 
   105 
   103     def del_rtag(self, stype, rtype, otype, tagged):
   106     def del_rtag(self, stype, rtype, otype, tagged):