Skip to content
Snippets Groups Projects

Add type hints to models.py

Merged Henrik tom Wörden requested to merge f-type-hints into dev
1 unresolved thread
1 file
+ 58
33
Compare changes
  • Side-by-side
  • Inline
+ 58
33
@@ -587,18 +587,24 @@ class Entity(object):
return name_result and id_result
def get_parents(self):
def get_parents(self) -> list:
"""Get all parents of this entity.
@return: _Parents(list)
Returns
-------
list
Parents
"""
return self.parents
def get_parents_recursively(self):
def get_parents_recursively(self) -> list:
"""Get all ancestors of this entity.
@return: list of Entities
Returns
-------
list
list of Entities
"""
all_parents = _Parents()
@@ -606,15 +612,16 @@ class Entity(object):
return all_parents
def _get_parent_recursively(self, all_parents):
def _get_parent_recursively(self, all_parents: list) -> None:
"""Get all ancestors with a little helper.
As a side effect of this method, the ancestors are added to
all_parents.
@param all_parents: The added parents so far.
Important: As a side effect of this method, the ancestors are
added to all_parents.
@return: None, but see side effects.
Parameters
----------
all_parents : list
The added parents so far
"""
for parent in self.parents:
@@ -624,22 +631,21 @@ class Entity(object):
all_parents.append(w_parent)
w_parent._get_parent_recursively(all_parents)
def get_parent(self, key):
def get_parent(self, key: Union[Entity, int, str]) -> Optional[Entity]:
"""Return the first parent matching the key or None if no match exists.
Parameters
---------
key : int or Enity or str
----------
key : Entity, int, str
The id, Entity, or name of the parent that should be
returned. If an Entity is given, its id or its name is
used to find a matching parent.
Returns
-------
parent : Entity
Entity
The first parent of this entity that matches the given id,
entity, or name.
"""
if isinstance(key, int):
@@ -665,41 +671,51 @@ class Entity(object):
return None
def get_properties(self):
def get_properties(self) -> list:
"""Get all properties of this entity.
@return: _Properties(list)
Returns
-------
list
_Properties(list)
"""
return self.properties
def get_property(self, pattern):
""" Return the first matching property or None.
def get_property(self, pattern: Union[Entity, str, int]) -> Optional[Property]:
"""Return the first matching property or None.
Parameters
----------
pattern : str or int or Entity
pattern : Entity, str, int
The name or id to look for (case-insensitive) or an Entity where
the name or id is used to match the properites of this instance.
Returns
-------
property : Property
Property
The first Property of this Entity with a matching name or id.
Raises
------
ValueError
Wrong input type.
"""
# entity given
if (hasattr(pattern, "name") or hasattr(pattern, "id")):
# entity given
pattern_name = getattr(pattern, "name", None)
pattern_id = getattr(pattern, "id", None)
if pattern_name or pattern_id:
# only return if a result was found, otherwise use id
if (hasattr(pattern, "name") and pattern.name is not None
and self.get_property(pattern.name) is not None):
if (pattern_name is not None
and self.get_property(pattern_name) is not None):
return self.get_property(pattern.name)
return self.get_property(pattern_name)
if hasattr(pattern, "id") and pattern.id is not None:
return self.get_property(pattern.id)
if pattern_id is not None:
return self.get_property(pattern_id)
# int given
elif isinstance(pattern, int):
@@ -718,15 +734,24 @@ class Entity(object):
return None
def _get_value_for_selector(self, selector):
"""return the value described by the selector
def _get_value_for_selector(self, selector: Union[tuple, list, str]) -> Any:
"""Return the value described by the selector
Parameters
----------
selector : tuple, list, str
A selector is a list or a tuple of strings describing a path in an
entity tree with self as root. The last selector may be a special one
like unit or name.
A selector is a list or a tuple of strings describing a path in an
entity tree with self as root. The last selector may be a special one
like unit or name.
Returns
-------
Any
The value described by the selector.
See also get_property_values()
"""
SPECIAL_SELECTORS = ["unit", "value", "description", "id", "name"]
if not isinstance(selector, (tuple, list)):
Loading