Skip to main content

Define family trees in YAML

Project description

yamily

Define family trees in YAML

Setup

$ sudo apt-get install python3-yaml python3-graphviz # optional on debian / ubuntu
$ pip3 install --user --upgrade yamily[yaml,graphviz]

Usage

Import YAML

>>> import yaml, yamily, yamily.yaml
>>> alice_yaml = '''
... !person
... identifier: alice
... name: Alice Test
... birth_date: 2019-12-23
... mother: !person
...   identifier: alice-mother
...   name: Carol Test
...   birth_date: 1992-10-26
... father: !person
...   identifier: bob
...   name: Bob Test
... '''
>>> alice = yaml.load(alice_yaml, Loader=yamily.yaml.Loader)
>>> alice
Person(alice, Alice Test, *2019-12-23)
>>> alice.mother
Person(alice-mother, Carol Test, *1992-10-26)

Multiple YAML Files

>>> alice_yaml = '''
... !person
... identifier: alice
... name: Alice Test
... birth_date: 2019-12-23
... mother: carol
... '''
>>> carol_yaml = '''
... !person
... identifier: carol
... name: Carol Test
... birth_date: 1992-10-26
... '''
>>> collection = yamily.PersonCollection()
>>> for person_yaml in [alice_yaml, carol_yaml]:
...     person = yaml.load(person_yaml, Loader=yamily.yaml.Loader)
...     collection.add_person(person)
Person(alice, Alice Test, *2019-12-23)
Person(carol, Carol Test, *1992-10-26)
>>> collection['alice'].mother
Person(carol, Carol Test, *1992-10-26)
>>> collection['carol'] is collection['alice'].mother
True

Export YAML

>>> import datetime, yaml, yamily, yamily.yaml
>>> alice = yamily.Person("alice")
>>> alice.name = "Alice Test"
>>> alice.birth_date = datetime.date(2019, 12, 23)
>>> alice
Person(alice, Alice Test, *2019-12-23)

>>> alice.father = yamily.Person("alice-father")
>>> alice.father.name = "Bob Test"

>>> print(yaml.dump(alice, Dumper=yamily.yaml.Dumper))
!person
birth_date: 2019-12-23
father: !person
  identifier: alice-father
  name: Bob Test
identifier: alice
name: Alice Test
<BLANKLINE>

Plot Family Tree

$ yamily-dot . > tree.dot
$ dot -Tpdf -O tree.dot

Develop

$ git clone git@git.hammerle.me:fphammerle/yamily.git
$ cd yamily
$ git config --local core.hooksPath .githooks/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yamily-0.1.0.tar.gz (30.1 kB view hashes)

Uploaded source

Built Distribution

yamily-0.1.0-py3-none-any.whl (21.2 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page