platypush/platypush/common/__init__.py

35 lines
898 B
Python

import inspect
import logging
import os
from platypush.utils.manifest import Manifest
logger = logging.getLogger('platypush')
def exec_wrapper(f, *args, **kwargs):
from platypush import Response
try:
ret = f(*args, **kwargs)
if isinstance(ret, Response):
return ret
return Response(output=ret)
except Exception as e:
logger.exception(e)
return Response(errors=[str(e)])
class ExtensionWithManifest:
def __init__(self, *_, **__):
self._manifest = self.get_manifest()
def get_manifest(self) -> Manifest:
manifest_file = os.path.join(os.path.dirname(inspect.getfile(self.__class__)), 'manifest.yaml')
assert os.path.isfile(manifest_file), (
'The extension {} has no associated manifest.yaml'.format(self.__class__.__name__)
)
return Manifest.from_file(manifest_file)