Package |
|
Code |
|
Tools |
|
CI/CD |
|
Scans |
|
Mentions |
|
Badge |
|
Graphinate is a python library that can be used to generate Graph Data Structures from Data Sources.
It can help create an efficient retrieval pipeline from a given data source, while also enabling the developer to map data payloads and hierarchies to a Graph.
In addition, there are several modes of output to enable examination of the Graph and its content.
Graphinate uses and builds upon the excellent NetworkX.
- Website (including documentation): https://erivlis.github.io/graphinate
- Source: https://github.com/erivlis/graphinate
- Package: https://pypi.org/project/graphinate
Graphinate is available on PyPI:
pip install graphinate
To install with server support
pip install graphinate[server]
Graphinate officially supports Python >= 3.10.
import graphinate
N: int = 8
# First Define a GraphModel instance.
# It will be used to hold the graph definitions
graph_model: graphinate.GraphModel = graphinate.model(name="Octagonal Graph")
# Register in the Graph Model the edges' supplier generator function
@graph_model.edge()
def edge():
for i in range(N):
yield {'source': i, 'target': i + 1}
yield {'source': N, 'target': 0}
# Use the NetworkX Builder
builder = graphinate.builders.NetworkxBuilder(graph_model)
# build the NetworkX GraphRepresentation
# the output in this case is a nx.Graph instance
graph = builder.build()
# this supplied plot method uses matplotlib to display the graph
graphinate.matplotlib.plot(graph, with_edge_labels=True)
# or use the Mermaid Builder
builder = graphinate.builders.MermaidBuilder(graph_model)
# to create a Mermaid diagram
diagram: str = builder.build()
# and get Markdown or single page HTML to display it
mermaid_markdown: str = graphinate.mermaid.markdown(diagram)
mermaid_html: str = graphinate.mermaid.html(diagram, title=graph_model.name)
# or use the GraphQL Builder
builder = graphinate.builders.GraphQLBuilder(graph_model)
# to create a Strawberry GraphQL schema
schema = builder.build()
# and serve it using Uvicorn web server
graphinate.graphql.server(schema)
Usage: python -m graphinate [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
save
server
Usage: python -m graphinate save [OPTIONS]
Options:
-m, --model MODEL A GraphModel instance reference {module-
name}:{GraphModel-instance-variable-name} For example,
given var `model=GraphModel()` defined in app.py file,
then the reference should be app:model
--help Show this message and exit.
TIP: requires the
server
extra to be installed. e.g.,pip install graphinate[server]
Usage: python -m graphinate server [OPTIONS]
Options:
-m, --model MODEL A GraphModel instance reference {module-
name}:{GraphModel-instance-variable-name} For example,
given var `model=GraphModel()` defined in app.py file,
then the reference should be app:model
-p, --port INTEGER Port number.
--help Show this message and exit.
Use UV to install all dependencies
uv sync --all-extras --all-groups
uv lock --upgrade
uv sync --all-extras --all-groups
ruff check src
ruff check src --fix
python -m pytest tests -n auto --cov=src --cov-branch --doctest-modules --cov-report=xml --junitxml=junit.xml
python -m pytest tests -n auto --cov=src --cov-branch --doctest-modules --cov-report=html --junitxml=junit.xml
python -m pytest tests -n auto --cov=src --cov-branch --doctest-modules --cov-report=term --junitxml=junit.xml
python -m mkdocs serve
python -m mkdocs build
Copyright © 2023-2025 Eran Rivlis