diff options
author | Pierre-Yves David <pierre-yves.david@logilab.fr> | 2008-08-22 15:25:39 +0200 |
---|---|---|
committer | Pierre-Yves David <pierre-yves.david@logilab.fr> | 2008-08-22 15:25:39 +0200 |
commit | d861299087e1ec9d9d6fd3ea254b3d549d6454e4 (patch) | |
tree | 6256a18994eb74323684536d99e4e00cb6bde6a7 /testlib.py | |
parent | 1530f6a9ef48332b1f096c0a0e560bb29ec1f25f (diff) | |
download | logilab-common-d861299087e1ec9d9d6fd3ea254b3d549d6454e4.tar.gz |
add tag decorator to tag function and class
Diffstat (limited to 'testlib.py')
-rw-r--r-- | testlib.py | 32 |
1 files changed, 32 insertions, 0 deletions
@@ -1696,3 +1696,35 @@ def enable_dbc(*args): class AttrObject: # XXX cf mock_object def __init__(self, **kwargs): self.__dict__.update(kwargs) + + +#class Tagged(object): +# def __init__(self, tags, callable): +# self.__tag = tags +# self.__callable = callable +# +# def __getttr__(self, attr): +# return getattr(self, attr) +# +# def __setattr__(self, attr, value): +# return setattr(self.__callable, attr, value) + +def tag(*args): + """descriptor adding tag to a function""" + def desc(func): + assert not hasattr(func, 'tags') + setattr(func, 'tags', Tags(args)) + return func + return desc + + + +class Tags(set): + + def __getitem__(self, key): + return key in self + + + + def match(self, exp): + return eval(exp, {}, self) |