8000 GitHub - erivlis/graphinate: Graphinate. Data to Graphs.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

erivlis/graphinate

Repository files navigation

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

Table of Contents

Introduction

What is Graphinate?

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.

Links

Quick Start

Install

Graphinate is available on PyPI:

pip install graphinate

To install with server support

pip install graphinate[server]

Graphinate officially supports Python >= 3.10.

Example

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)

CLI

Commands

Usage: python -m graphinate [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  save
  server

Save

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.

Server

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.

Gallery

Python Class AST

matplotlib

graph_ast

3D Force-Directed Animation

GitHub Repository

repo_graph

Web Links

Web Page Links

Development

Install dependencies

Use UV to install all dependencies

uv sync --all-extras --all-groups

Update dependencies

uv lock --upgrade
uv sync --all-extras --all-groups

Ruff

Report issues

ruff check src

Fix issues

ruff check src --fix

Test

Standard (cobertura) XML Coverage Report

 python -m pytest tests -n auto --cov=src --cov-branch --doctest-modules --cov-report=xml --junitxml=junit.xml

HTML Coverage Report

python -m pytest tests -n auto --cov=src --cov-branch --doctest-modules --cov-report=html --junitxml=junit.xml

Terminal Coverage Report

python -m pytest tests -n auto --cov=src --cov-branch --doctest-modules --cov-report=term --junitxml=junit.xml

Docs

test

python -m mkdocs serve

build

python -m mkdocs build

Acknowledgements

Dependencies

Python

Click Logo Loguru Logo matplotlib Logo. NetworkX Logo. Strawberry GraphQL Logo

Javascript and HTML

3D Force-Directed Graph Logo Graphql Voyager Logo Tweakpane Logo

Dev Tools

Hatch logo. Material for MkDocs pytest logo Ruff logo uv logo

IDE

PyCharm logo


Alt


Work on my Machine

Copyright © 2023-2025 Eran Rivlis

Contributors 3

  •  
  •  
  •  
0