diff --git a/CHANGELOG.md b/CHANGELOG.md index b6d7d84f1763efba0261116af38755cc3d9c6b00..e4ee1991ea606d0d88aee5bcd2b240fb4e51f57e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### +* Entity State support (experimental). See the `caosdb.State` class for more + information. * Versioning support (experimental). ### Changed ### diff --git a/src/caosdb/common/state.py b/src/caosdb/common/state.py index 431675fb1893ee215f22b356a78ee50fad987b97..7b6a9ce37d1d5b7a5f00987721d58cc9d56f75dd 100644 --- a/src/caosdb/common/state.py +++ b/src/caosdb/common/state.py @@ -1,5 +1,19 @@ from lxml import etree class State: + """State + + Represents the state of an entity and take care of the serialization and + deserialization of xml for the entity state. + + An entity state is always a State of a StateModel. + + Properties + ---------- + name : str + Name of the State + model : str + Name of the StateModel + """ def __init__(self, model, name): self.name = name @@ -19,6 +33,12 @@ class State: return f"State('{self.model}', '{self.name}')" def to_xml(self): + """Serialize this State to xml. + + Returns + ------- + xml : etree.Element + """ xml = etree.Element("State") if self.name is not None: xml.set("name", self.name) @@ -28,6 +48,16 @@ class State: @staticmethod def from_xml(xml): + """Create a new State instance from an xml Element. + + Parameters + ---------- + xml : etree.Element + + Returns + ------- + state : State + """ name = xml.get("name") model = xml.get("model") return State(name=name, model=model)