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 Graphviz library. Supported data modeling frameworks are:

We also support D2 as an alternative output format.

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

Type annotations are formatted using the typenames library.

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 "erdantic @ git+https://github.com/drivendataorg/erdantic.git"

See pip's documentation for more on how to specify VCS dependencies.

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.2.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

erdantic-1.2.1-py3-none-any.whl (34.9 kB view details)

Uploaded Python 3

File details

Details for the file erdantic-1.2.1.tar.gz.

File metadata

  • Download URL: erdantic-1.2.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for erdantic-1.2.1.tar.gz
Algorithm Hash digest
SHA256 9105fc51260ee58b531690d1ef87db81f849257e73e106cd8f2a7f8a26d8d9b0
MD5 ae334770af17cd0d14ca20f859329e27
BLAKE2b-256 42b3d814074dc6076a97682dc8a62a3da672fd982a533cc1f29854b6a4433ef2

See more details on using hashes here.

Provenance

The following attestation bundles were made for erdantic-1.2.1.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.2.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for erdantic-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f548da3e9933e298f862eb33469ab375a372097ae289a4ca47a06ff69a1a6210
MD5 5e19c8c1c6daf3ff6382a84f306dfd7c
BLAKE2b-256 8439c8982be2f72454ef135f247fd9c0fd800444d8e28767c9c6cb25e2df7c2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for erdantic-1.2.1-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 Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page