Skip to content

trusted_object

Trusted object api models conversion.

Classes:

Name Description
TrustedObjectConverter

Facility to convert from and to TrustedObject.

TrustedObjectConverter #

Facility to convert from and to TrustedObject.

Methods:

Name Description
to_model

Convert a trusted object to its model.

from_model

Transform to the original object.

to_model(module: str, class_: str, *args: object, reconstructor: Literal['_reconstructor', 'type', 'partial'], **kwargs: object) -> TrustedObjectInput #

Convert a trusted object to its model.

Source code in src/xpdeep/utils/api_model_conversion/trusted_object.py
@staticmethod
def to_model(
    module: str,
    class_: str,
    *args: object,
    reconstructor: Literal["_reconstructor", "type", "partial"],
    **kwargs: object,
) -> TrustedObjectInput:
    """Convert a trusted object to its model."""
    return TrustedObjectInput(
        reconstructor=reconstructor,
        class_=class_,
        module=module,
        state=_StateDictConverter.to_state_dict_input({"args": args, "kwargs": kwargs})
        if reconstructor == "partial"
        else _StateDictConverter.to_state_dict_input(kwargs),
    )

from_model(input_model: TrustedObjectInput) -> object #

Transform to the original object.

Source code in src/xpdeep/utils/api_model_conversion/trusted_object.py
@staticmethod
def from_model(input_model: TrustedObjectInput) -> object:
    """Transform to the original object."""
    input_model.module = re.sub(r"^(\\.)*", "", input_model.module)  # prevent smart hackers with relative imports

    module = importlib.import_module(input_model.module)
    # Get the class from the module
    state_unparse = _StateDictConverter.from_state_dict_input(input_model.state)

    cls = getattr(module, input_model.class_)

    obj = cls.__new__(cls)

    try:
        # Numpy objects implement __setstate__ to set object internal state. Do not have __dict__ attribute
        # like common python objects
        obj.__setstate__(state_unparse)
    except AttributeError:
        obj.__dict__.update(state_unparse)

    return obj