Skip to content

Library for graph-like storage in postgresql using sqlalchemy

License

Notifications You must be signed in to change notification settings

NCI-GDC/psqlgraph

Repository files navigation

Codacy Badge Codacy Badge Build Status pre-commit

Overview

The psqlgraph library is a layer on top of SQLAlchemy's ORM layer that attempts to capitalize on the benefits of SQL while utilizing Postgresql's JSONB support for SQL-less flexibility. Psqlgraph allows you to interact with your data graphically by defining Node and Edge models to maintain flexible many-to-many relationships.

Usage

For usage documentation please see /doc/build/html.

Installation

Dependencies

Before continuing you must have the following programs installed:

The psqlgraph library requires the following pip dependencies

Project Dependencies

Project dependencies are managed using PIP

pip install

# Mac M2 - assuming you `brew install postgresql@13`
$ export PATH=$PATH:/opt/homebrew/opt/postgresql@13/bin/

$ pip install .[dev]

Building Documentation

Documentation is built using Sphinx.

❯ cd doc
❯ make html
sphinx-build -b html -d build/doctrees   source build/html
Running Sphinx v1.2.3
     ...
dumping object inventory... done
build succeeded.

Build finished. The HTML pages are in build/html.

Test Setup

Running the setup script will:

  1. Setup the test postgres tables
❯ python psqlgraph/setup_psql_graph.py
Setting up test database
Dropping old test data
Creating tables in test database

Setup pre-commit hook to check for secrets

We use pre-commit to setup pre-commit hooks for this repo. We use detect-secrets to search for secrets being committed into the repo.

To install the pre-commit hook, run

pre-commit install

To update the .secrets.baseline file run

detect-secrets scan --update .secrets.baseline

.secrets.baseline contains all the string that were caught by detect-secrets but are not stored in plain text. Audit the baseline to view the secrets .

detect-secrets audit .secrets.baseline

Contributing

Read how to contribute here

Tests

Running the setup script will test the library against a local postgres installation

❯  pip install pytest
❯  cd test
❯  py.test -v