diff --git a/wsme/__init__.py b/wsme/__init__.py index c9169b9..902011f 100644 --- a/wsme/__init__.py +++ b/wsme/__init__.py @@ -1,7 +1,8 @@ -from wsme.api import expose, validate +from wsme.api import sig, expose, validate from wsme.root import WSRoot from wsme.types import wsattr, wsproperty, Unset -__all__ = ['expose', 'validate', +__all__ = [ + 'expose', 'validate', 'sig', 'WSRoot', 'wsattr', 'wsproperty', 'Unset'] diff --git a/wsme/api.py b/wsme/api.py index 80e3186..2870a04 100644 --- a/wsme/api.py +++ b/wsme/api.py @@ -156,6 +156,17 @@ class expose(object): return func +class sig(object): + def __init__(self, return_type, *param_types, **options): + self.expose = expose(return_type, **options) + self.validate = validate(*param_types) + + def __call__(self, func): + func = self.expose(func) + func = self.validate(func) + return func + + class pexpose(object): def __init__(self, return_type=None, contenttype=None): self.return_type = return_type