tlc.core.objects.mutable_object
#
Base class for objects that can be mutated.
Module Contents#
Classes#
Class |
Description |
---|---|
Base class for objects that can be mutated. |
API#
- class tlc.core.objects.mutable_object.MutableObject(url: tlc.core.url.Url | None = None, created: str | None = None, last_modified: str | None = None, init_parameters: Any = None)#
Bases:
tlc.core.object.Object
Base class for objects that can be mutated.
MutableObject properties:
‘last_modified’: The time when this object was last modified.
The MutableObject have designated update_attribute/s methods that are meant to be used to modify the object’s attributes. Using these function to modify objects makes sure that the objects’ internal state are updated correctly, e.g. sets the ‘last_modified’ timestamp.
Directly modifying MutableObject (public) attributes from the outside using
mutable_obj.attr = value
orsetattr(mutable_obj, "attr", value)
is not recommended. But, if object attributes have to be set directly, make sure to call theupdate_internal_state
to signal the update.- Parameters:
url – The URL of the object.
created – The creation time of the object.
init_parameters – A dictionary containing the initial values of the object’s properties.
- update_internal_state(persist: bool = True) None #
Updates the internal state of the object.
Override this method to update the internal state of the object whenever attributes have been changed. This method is called by the
update_attribute/s
- update_attribute(attr_name: str, value: Any) None #
Updates the given attribute with the given value.
This method will only allow modification of attributes that are defined in the object’s schema and are writeable. If the object schema is has not yet been evaluated, this method will do so. If the object does not have a Schema a ValueError will be raised.
If the attribute is modified the object’s ‘last_modified’ timestamp is updated. The internal state of the object is also updated by calling the
_update_internal_state
method.- Parameters:
attr_name – The name of the attribute to update.
value – The value to set.
- Returns:
True if the object was changed, False otherwise.
- Raises:
ValueError – if the schema is not set, or attribute name is unknown.
- update_attributes(attribute_dict: Mapping[str, object]) None #
Updates the object with the given attribute_name,value pairs.
This method will only allow modification of attributes that are defined in the object’s schema and are writeable. If the object schema is has not yet been evaluated, this method will do so. If the object does not have a Schema a ValueError will be raised.
If the attribute is modified the object’s ‘last_modified’ timestamp is updated. The internal state of the object is also updated by calling the
update_internal_state
method.- Parameters:
attr_name – The name of the attribute to update.
value – The value to set.
- Returns:
True if the object was changed, False otherwise.
- Raises:
ValueError – if the schema is not set, or attribute name is unknown.
- static add_last_modified_property_to_schema(schema: tlc.core.schema.Schema, description: str) None #
Add the ‘last_modified’ property to this schema
- to_json(init_level: int = 0) str #
Returns a JSON representation of this object. This will be sufficient to recreate a fully functioning clone of the object at a later time.
Note that for brevity, properties with default values are not written to the string.
- is_stale(timestamp: datetime.datetime | str | None, epsilon: float = 0.0) bool #
Indicates whether this object is stale compared to the given timestamp (using
last_modified
property).The function parses the timestamps and computes the difference in seconds. If this difference exceeds the provided epsilon value, the object is considered stale.
- Parameters:
timestamp – The timestamp against which to check staleness. Can be None.
epsilon – The tolerance in seconds for staleness. If the difference between the object’s timestamp and the provided timestamp exceeds this value, the object is considered stale. Defaults to 0.0s.
- Returns:
True if the object is stale, False otherwise.
- Raises:
ValueError – if the timestamp is invalid.