forked from platypush/platypush
23 lines
578 B
Python
23 lines
578 B
Python
import inspect
|
|
import json
|
|
|
|
|
|
class ProcedureEncoder(json.JSONEncoder):
|
|
"""
|
|
Encoder for the Procedure model.
|
|
"""
|
|
|
|
def default(self, o):
|
|
if callable(o):
|
|
return {
|
|
'type': 'native_function',
|
|
'module': o.__module__,
|
|
'source': inspect.getsourcefile(o),
|
|
'args': [
|
|
name
|
|
for name, arg in inspect.signature(o).parameters.items()
|
|
if arg.kind != arg.VAR_KEYWORD
|
|
],
|
|
}
|
|
|
|
return super().default(o)
|