Skip to content

About

Graphinate. Data to Graphs.

Topics

Resources

Stars

24 stars

Watchers

1 watching

Forks

Repository files navigation

Graphinate. Data to Graphs.
Package PyPI - version PyPI - Status PyPI - Python Version PyPI - Downloads PyPI - Dependents Libraries.io SourceRank
Code GitHub GitHub repo size GitHub last commit (by committer) Contributors
Tools PyCharm uv ruff mkdocs-material mdformat Hatch project commitizen agentskills
CI/CD Test Test (Beta) CodSpeed Publish Publish Docs
Scans Coverage Quality Gate Status Security Rating Maintainability Rating Reliability Rating Lines of Code Vulnerabilities Bugs Codacy Badge Codacy Coverage CodeFactor DeepSource DeepSource Snyk CodSpeed
Mentions PythonBytes Podcast Python Hub
Badge Graphinate

Table of Contents

Introduction

Meet Graphinate

Graphinate turns your data into Graphs. Effortlessly.

It is a Python library designed to streamline the pipeline from raw data to structured Graph representations. With Graphinate, you can easily map complex data hierarchies and payloads directly to nodes and edges, creating an efficient retrieval system.

Whether you need to visualize relationships, analyze structure, or serve data via an API, Graphinate provides the tools to bring your graph to life.

Graphinate uses and builds upon the excellent NetworkX.

Library at a Glance

📐 The Architect (graphinate.modeling)

Define the blueprint of your graph by decorating simple functions (sync or async) that yield your data as nodes and edges, and compose models via + or GraphModel.merge().

⚙️ The Engine (graphinate.engine)

Traverses models and coordinates lifecycle events (on_start, on_node, on_edge, on_finish) across observers via synchronous (run()) or asynchronous (arun()) execution.

🏗️ The Construction Crew (graphinate.builders)

Takes your graph blueprint and constructs various outputs—a queryable NetworkX graph, a D3 dictionary, a Mermaid diagram, or an executable GraphQL schema (supporting both dynamic and static schema modes).

🎨 The Artists (graphinate.renderers)

A suite of tools to visualize your graphs, from matplotlib plots to interactive Mermaid diagrams.

📡 The Broadcaster (graphinate.server)

Instantly serve your graph data as an interactive GraphQL API with an embedded, 100% offline 3D WebGL graph viewer requiring zero external CDNs.

⌨️ The Command Center (graphinate.cli)

A handy command-line tool to manage and interact with your graph definitions without writing boilerplate code.

Links

Quick Start

Install

Graphinate is available on PyPI:

pip install graphinate

or

uv add graphinate

To install with high-performance vectorized operations (NumPy progressive enhancement):

pip install "graphinate[perf]"

To install with server and offline 3D WebGL viewer support:

pip install "graphinate[server]"

or combine them:

pip install "graphinate[perf,server]"

Graphinate officially supports Python >= 3.11.

Example

import graphinate

N: int = 8

# First define a GraphModel instance to hold 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 (an nx.Graph instance)
graph = builder.build()

# Display the graph with matplotlib
graphinate.matplotlib.plot(graph, with_edge_labels=True)

# Or create a Mermaid diagram
mermaid_builder = graphinate.builders.MermaidBuilder(graph_model)
diagram: str = mermaid_builder.build()
mermaid_markdown: str = graphinate.mermaid.markdown(diagram)

# Or create a Strawberry GraphQL schema and serve it
gql_builder = graphinate.builders.GraphQLBuilder(graph_model)
schema = gql_builder.build()
graphinate.graphql.server(schema)

Asynchronous Pipelines (abuild)

Graphinate natively supports asynchronous generator functions (async def ... yield) and coroutines (async def ... return [...]):

import asyncio
import graphinate
from graphinate.builders import NetworkxBuilder

m = graphinate.model(name="Async Mesh")

@m.node(type_="service")
async def services():
    yield "auth-service"
    yield "payment-service"

async def main():
    # Asynchronously build across any builder
    nx_graph = await graphinate.abuild(NetworkxBuilder, m)
    print(nx_graph)

asyncio.run(main())

CLI

For detailed information on the command-line interface, please see the CLI Usage Guide in the official documentation.

Gallery

Python Class AST

matplotlib

graph_ast

3D Force-Directed Animation

GitHub Repository

repo_graph

Web Links

Web Page Links

Development

For instructions on how to set up your development environment, run tests, and contribute to the project, please see the Development Guide in the official documentation.

Acknowledgements

For a list of the dependencies and tools that make Graphinate possible, please see the Acknowledgements page in the official documentation.


Alt


Work on my Machine

Copyright © 2023-2026 Eran Rivlis

About

Graphinate. Data to Graphs.

Topics

Resources

Stars

24 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages