Giter VIP home page Giter VIP logo

graphinate's Introduction

Graphinate. Data to Graphs.
Package PyPI - version PyPI - Status PyPI - Python Version PyPI - Downloads
GitHub GitHub repo size GitHub last commit (by committer) Contributors
Tools PyCharm ruff uv mkdocs-material pipdeptree
CI/CD Tests Publish Publish Docs
Scans Coverage
Quality Gate Status Security Rating Maintainability Rating Reliability Rating
Lines of Code Vulnerabilities Bugs
Codacy Badge Codacy Coverage Scrutinizer

Introduction

What is Graphinate?

Graphinate is a python library that aims to simplify the generation of 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 easily map data payloads and hierarchies to a Graph.

In addition, there are several modes of output to enable examination of the Graph, and it's content.

Graphinate utilizes 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

# Define GraphModel
graph_model = graphinate.model(name="Octagonal Graph")


# Register edges supplier function
@graph_model.edge()
def edge():
    for i in range(N - 1):
        yield {'source': i, 'target': i + 1}
    yield {'source': N - 1, 'target': 0}


# Materialize the GraphModel
graphinate.materialize(graph_model)

graphinate.model function

Note

This function creates GraphModel class that is used to declaratively register Edge and/or Node data supplier functions by using the GraphModel.node() and GraphModel.edge() decorators.

graphinate.materialize function

Note

This function can be used to easily generate an output from a GraphModel instance. By default, it will prompt the user to choose the output format, using a popup GUI dialog box.

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

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 AST

d3_graph_ast

GitHub Repository

repo_graph

Python AST - 3D Force-Directed Animation

Web Page Links

Web Page Links

Development

Ruff

ruff check src

Test

Standard (cobertura) XML Coverage Report

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

HTML Coverage Report

python -m pytest tests -n auto --cov=src --cov-branch --doctest-modules --cov-report=html --junitxml=test_results.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.

Dev Tools

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

IDE

PyCharm logo.


Star Chart

Copyright © 2023 Eran Rivlis

graphinate's People

Contributors

erivlis avatar dependabot[bot] avatar imgbotapp avatar

Stargazers

Bihag Kashikar avatar Shaurita Hutchins avatar  avatar allen.hu avatar  avatar 0x1orz avatar  avatar  avatar Orefale Oluwayinka  avatar Tomer avatar  avatar Tim Kersey avatar Visesh Rajendraprasad avatar Nikolaus Schlemm avatar Jeremy Young avatar Fredrik Sjöstrand avatar Oliver Yerbury-Hodgson avatar  avatar Joshua Sundance Bailey avatar Billy Rowell avatar Ryan avatar Charles Swartz avatar  avatar

Watchers

 avatar

graphinate's Issues

tkinter exception thrown in example code

I've installed the latest tkinter and graphinate today and hitting an exception on the demo code already. I did not install the server (which i thought was optional)

Python 3.10.12 / Linux Mint
https://erivlis.github.io/graphinate/start/

$  /home/bmo/code/graphinate/env/bin/python /home/bmosley/code/graphinate/graph_fun.py                                                                                                              exit 1
Traceback (most recent call last):
  File "/home/bmo/code/graphinate/graph_fun.py", line 18, in <module>
    graphinate.materialize(graph_model)
  File "/home/bmo/code/graphinate/env/lib/python3.10/site-packages/graphinate/materializers/__init__.py", line 54, in materialize
    result = modal_radiobutton_chooser(title,
  File "/home/bmo/code/graphinate/env/lib/python3.10/site-packages/graphinate/tools/gui.py", line 18, in modal_radiobutton_chooser
    win = _modal_window(window_title)
  File "/home/bmo/code/graphinate/env/lib/python3.10/site-packages/graphinate/tools/gui.py", line 10, in _modal_window
    win.wm_attributes('-toolwindow', 'True')
  File "/usr/lib/python3.10/tkinter/__init__.py", line 2005, in wm_attributes
    return self.tk.call(args)
_tkinter.TclError: bad attribute "-toolwindow": must be -alpha, -topmost, -zoomed, -fullscreen, or -type

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.