Skip to main content

Define family trees in YAML

Project description

yamily

Define family trees in YAML

Setup

Debian / Ubuntu

$ sudo apt-get install python3-yaml python3-graphviz
$ pip3 install --user --upgrade yamily

Mac

$ brew install graphviz
$ pip3 install --upgrade yamily[yaml,graphviz]

Windows

  1. Download and install Graphviz.
  2. Download and install Python.
  3. Open Command Prompt / cmd.exe.
  4. Run command pip install --user --upgrade yamily[yaml,graphviz].

Usage

Import YAML

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

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.

Files for yamily, version 0.2.0
Filename, size File type Python version Upload date Hashes
Filename, size yamily-0.2.0-py3-none-any.whl (21.6 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size yamily-0.2.0.tar.gz (31.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page