Skip to main content

Entity relationship diagrams for Python data model classes like Pydantic.

Project description

erdantic: Entity Relationship Diagrams

Docs Status PyPI conda-forge conda-forge feedstock tests codecov

erdantic is a simple tool for drawing entity relationship diagrams (ERDs) for Python data model classes. Diagrams are rendered using the venerable Graphviz library. Supported data modeling frameworks are:

You can use erdantic either as a convenient CLI or as a Python library. Great for adding a simple and clean data model reference to your documentation.

Example diagram created by erdantic

Installation

erdantic's graph modeling depends on pygraphviz and Graphviz, an open-source C library. If you are on Linux or macOS, the easiest way to install everything together is to use conda and conda-forge:

conda install erdantic -c conda-forge

If not using conda, Graphviz must be installed first (before you can install pygraphviz). For recommended options and installation troubleshooting, see the pygraphviz docs. Then to install erdantic and its Python dependencies from PyPI:

pip install erdantic

Development version

You can get the development version from GitHub with:

pip install git+https://github.com/drivendataorg/erdantic.git#egg=erdantic

Quick usage

First, make sure that the data model classes that you want to include in your diagram are importable. This means the code with your models should either be available on your sys.path or installed into the same virtual environment as erdantic.

The fastest way to produce a diagram like the above example is to use the erdantic CLI. Simply specify the full dotted import path to your model and an output file path. The rendered format is interpreted from the filename extension.

erdantic erdantic.examples.pydantic.Party -o diagram.png

You can also import the erdantic Python library. This lets you inspect the diagram data and potentially modify it. You will have greater ability to customize the diagram in Python.

import erdantic as erd
from erdantic.examples.pydantic import Party

# Easy one-liner
erd.draw(Party, out="diagram.png")

# Or create a diagram object that you can inspect and do stuff with
diagram = erd.create(Party)
list(diagram.models.keys())
#> [ 'erdantic.examples.pydantic.Adventurer',
#>   'erdantic.examples.pydantic.Party',
#>   'erdantic.examples.pydantic.Quest',
#>   'erdantic.examples.pydantic.QuestGiver']
diagram.draw("diagram.png")

Check out the "Usage Examples" section of our docs to see more.

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

erdantic-1.1.0.post1.tar.gz (913.0 kB view details)

Uploaded Source

Built Distribution

erdantic-1.1.0.post1-py3-none-any.whl (32.6 kB view details)

Uploaded Python 3

File details

Details for the file erdantic-1.1.0.post1.tar.gz.

File metadata

  • Download URL: erdantic-1.1.0.post1.tar.gz
  • Upload date:
  • Size: 913.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for erdantic-1.1.0.post1.tar.gz
Algorithm Hash digest
SHA256 8ab6fec958f02f3e846c01f2fcbaf01df202b93257cbda6f7daec0588a3337cf
MD5 5e386c976b7305c5056e6ee915a5700e
BLAKE2b-256 011f020af6165c4f3a9679b818f563ecf675710d9e84ed2902eec49015fc8b1a

See more details on using hashes here.

Provenance

The following attestation bundles were made for erdantic-1.1.0.post1.tar.gz:

Publisher: release.yml on drivendataorg/erdantic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file erdantic-1.1.0.post1-py3-none-any.whl.

File metadata

  • Download URL: erdantic-1.1.0.post1-py3-none-any.whl
  • Upload date:
  • Size: 32.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for erdantic-1.1.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 dfff1b0d3282bff8c256a12e8d3ae516a29b395f85d3322bde8617fd7fa31b43
MD5 266fc2f530d1a52d7edaab4228ada33a
BLAKE2b-256 405a4c9e09c02e1948d35e65ebc2b1c6c8be2fb61aa04fe7e765758169aa400f

See more details on using hashes here.

Provenance

The following attestation bundles were made for erdantic-1.1.0.post1-py3-none-any.whl:

Publisher: release.yml on drivendataorg/erdantic

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page