Source code for yggdrasil.metaschema.properties.KwargsMetaschemaProperty
from yggdrasil.metaschema.properties.ArgsMetaschemaProperty import (
ArgsMetaschemaProperty)
from yggdrasil.metaschema.properties.JSONObjectMetaschemaProperties import (
PropertiesMetaschemaProperty)
[docs]class KwargsMetaschemaProperty(ArgsMetaschemaProperty):
r"""Property class for 'kwargs' property."""
name = 'kwargs'
schema = {'description': ('Keyword arguments required to '
'recreate a class instance.'),
'type': 'object'}
_instance_dict_attr = ['input_keyword_arguments', 'input_kwargs']
[docs] @classmethod
def instance2kwargs(cls, instance):
r"""Get input keyword arguments from a class instance.
Args:
instance (object): Instance of a Python class.
Returns:
dict: Input keyword arguments for re-creating the instance.
"""
return cls.instance2args(instance)
[docs] @classmethod
def encode(cls, instance, typedef=None):
r"""Encoder for the 'kwargs' property."""
typedef_kwargs = None
# if isinstance(typedef, dict) and ('kwargs' in typedef):
# typedef_kwargs = typedef['kwargs']
kwargs = cls.instance2kwargs(instance)
return PropertiesMetaschemaProperty.encode(kwargs, typedef_kwargs)
[docs] @classmethod
def compare(cls, *args, **kwargs):
r"""Comparison method for 'args' container property."""
for e in PropertiesMetaschemaProperty.compare(*args, **kwargs):
yield e