From a66f9fe0f2ba0719462f8ca9a55a8d5c97ad9c74 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Tue, 17 Nov 2020 12:07:22 +0100
Subject: [PATCH] DOC: update CHANGELOG and add source docs

---
 CHANGELOG.md               |  2 ++
 src/caosdb/common/state.py | 30 ++++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index b6d7d84f..e4ee1991 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 431675fb..7b6a9ce3 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)
-- 
GitLab