hifis_surveyval.models.mixins package
Submodules
hifis_surveyval.models.mixins.mixins module
This module provides mixins for model classes with certain properties.
They are designed to co-operate with other mixins and forwards unused initialization arguments down to other mixins in the inheritance order.
- class hifis_surveyval.models.mixins.mixins.HasID(object_id: str, parent_id: Optional[str] = None, *args, **kwargs)[source]
Bases:
UsesSettings
This is the abstract superclass for all objects that carry an ID.
The ID is expected to be a string (or be convertible into such and to be unique among all identifiable objects.
IDs are separated by a HIERARCHY_SEPARATOR and the part after the last separator forms the so-called “short ID”. If no hierarchical parent_id is given, the short ID and the full ID are the same.
- __init__(object_id: str, parent_id: Optional[str] = None, *args, **kwargs) None [source]
Create a new identifiable object with a given ID.
The class will track all known IDs to prevent duplicates. A full ID is formed by merging the parent’s full ID (if it exists) and the object’s ID.
- Args:
- object_id:
A string serving as an ID to the object. It must be neither None nor empty.
- parent_id:
(Optional, Default=None) The full ID of another identifiable object that forms the hierarchical parent of this one. Used to generate the full ID.
- *args:
Will be forwarded to other mixins in the initialization order.
- **kwargs:
Will be forwarded to other mixins in the initialization order.
- Raises:
- ValueError:
Signals either a duplicate or invalid object_id
- property full_id: str
Get the full ID of the object (includes parent_id IDs).
- Returns:
The string identifying the object with respect to any other HasID
- known_ids: Set[str] = {}
- property short_id: str
Get the short ID of this object (without parent_id IDs).
- Returns:
The string identifying this object with respect to its siblings
- class hifis_surveyval.models.mixins.mixins.HasLabel(label: str, *args, **kwargs)[source]
Bases:
ABC
This mixin provides a label property.
This is used as a shorthand for objects with more complex descriptions that do not fit nicely in some places (e.g. as labels for graph axis).
- YAML_TOKEN = 'label'
The token used in metadata YAML files to identify labels.
- property label: str
Get the current label of the object.
- Returns:
The current object label.
- class hifis_surveyval.models.mixins.mixins.HasMandatory(is_mandatory: bool, *args, **kwargs)[source]
Bases:
ABC
This mixin provides functionality for optional mandatory indicators.
Model elements may require something to be present (e.g. an answer) directly or indirectly as a child of this object.
- YAML_TOKEN = 'mandatory'
The token used in metadata YAML files to indicate mandatory-ness.
- __init__(is_mandatory: bool, *args, **kwargs)[source]
Initialize an object with mandatory-ness indicator.
- property is_mandatory: bool
Check whether this question is marked as mandatory.
Mandatory questions are expected to be answered by participants.
- Returns:
True, if the question was marked as mandatory in the metadata, False otherwise
- abstract is_mandatory_fulfilled(check_for: Union[str, Iterable[str]]) Dict[str, bool] [source]
Check if the mandatory condition is fulfilled for given participants.
This is not affected by whether the Question or QuestionCollection is marked as mandatory or not. This function checks if the participants DO fulfil the mandatory condition, but not if they SHOULD. For the latter see the `is_mandatory’ - property.
- Args:
- check_for:
Either any iterable type, providing participant IDs as strings or a single string providing one participant ID. These are the IDs for which the fulfillment of the mandatory condition is checked.
- Returns:
A dictionary mapping each input participant ID to a boolean value indicating whether they fulfil the mandatory condition (i.e. the value for the respective participant ID will be ‘True’) or not.
- class hifis_surveyval.models.mixins.mixins.HasText(translations: Translated, *args, **kwargs)[source]
Bases:
ABC
This mixin provides a text property.
This is used as a more detailed description of the object, e.g. a verbatim question text. These texts may be translated, so when accessing them, providing a language is often required.
- YAML_TOKEN = 'text'
The token used in metadata YAML files to identify labels.
- __init__(translations: Translated, *args, **kwargs) None [source]
Initialize an object with a translatable description.
hifis_surveyval.models.mixins.uses_settings module
This module contains the base class for all objects that carry a unique ID.
IDs are composed of multiple parts interjected by a hierarchy separator.
- class hifis_surveyval.models.mixins.uses_settings.UsesSettings(settings: Settings, *args, **kwargs)[source]
Bases:
ABC
This is a mixin for objects that need access to the settings to function.
It caches a reference to the settings instance.
hifis_surveyval.models.mixins.yaml_constructable module
Provides an abstract class for classes constructed from YAML-Dictionaries.
All of these inheriting classes should define a Schema to dictate the required structure of the YAML to be parsed.
- class hifis_surveyval.models.mixins.yaml_constructable.YamlConstructable[source]
Bases:
ABC
An abstract class for classes that can be instantiated from a YamlDict.
It defines a catchall schema that accepts everything that looks like a valid YAML mapping.
- classmethod from_yaml_dictionary(yaml: Dict[str, Union[str, List[Union[str, Dict[str, Union[str, YamlList, YamlDict]]]], Dict[str, Union[str, List[Union[str, YamlDict]], YamlDict]]]], **kwargs) YamlConstructable [source]
Instantiate an object of this class from a given YamlDict.
The given YAML will be validated against the schema defined for the class. If the class did not define a schema on its own (although it should) a catchall schema is provided.
- Args:
- yaml:
A dictionary as received from the YAML parser containing the data required to create a new instance of the inheriting class
- Returns:
A new instance of the overriding subclass
- schema: Schema = Schema({<class 'str'>: Or(<class 'str'>, <class 'list'>, <class 'dict'>)})
The default schema of a YamlConstructable validates everything which is formatted like a YamlDictionary
Module contents
Provides mixins used in the data models.