Browse Source

person: added mother & father

Fabian Peter Hammerle 4 years ago
parent
commit
036fe849de
3 changed files with 15 additions and 2 deletions
  1. 2 0
      family_tree_yaml/__init__.py
  2. 11 2
      family_tree_yaml/yaml.py
  3. 2 0
      tests/persons/max-mustermann.yml

+ 2 - 0
family_tree_yaml/__init__.py

@@ -7,6 +7,8 @@ class Person:
         self.identifier: str = identifier
         self.name: typing.Optional[str] = None
         self.birth_date: typing.Optional[datetime.date] = None
+        self.mother: typing.Optional["Person"] = None
+        self.father: typing.Optional["Person"] = None
 
     def __repr__(self) -> str:
         """

+ 11 - 2
family_tree_yaml/yaml.py

@@ -23,15 +23,24 @@ class _YamlLoader(yaml.SafeLoader):
             person.name = person_attrs["name"]
         if "birth_date" in person_attrs:
             person.birth_date = person_attrs["birth_date"]
+        if "mother" in person_attrs:
+            person.mother = Person(person_attrs["mother"])
+        if "father" in person_attrs:
+            person.father = Person(person_attrs["father"])
         return person
 
 
 def read(yaml_path: typing.Union[str, pathlib.Path]) -> Person:
     """
-    >>> read('persons/max-mustermann.yml')
-    Person(max-mustermann, Max Mustermann, *1976-02-01)
     >>> read('persons/erika-mustermann.yml')
     Person(erika-mustermann, Erika Mustermann, *1957-08-12)
+    >>> maxl = read('persons/max-mustermann.yml')
+    >>> maxl
+    Person(max-mustermann, Max Mustermann, *1976-02-01)
+    >>> maxl.mother
+    Person(erika-mustermann)
+    >>> maxl.father
+    Person(thomas-mustermann)
     """
     if isinstance(yaml_path, str):
         return read(pathlib.Path(yaml_path))

+ 2 - 0
tests/persons/max-mustermann.yml

@@ -2,3 +2,5 @@
 identifier: max-mustermann
 name: Max Mustermann
 birth_date: 1976-02-01
+mother: erika-mustermann
+father: thomas-mustermann