Skip to main content

Create a RedisGraph model of a Python code base.

Project description

Pycograph

PyPI version Black

Pycograph

Homepage: https://pycograph.com/
PyPI: https://pypi.org/project/pycograph/

Explore your Python code with graph queries

Pycograph creates a RedisGraph model of your Python code. You can:

sample Redis Insight result

Getting Started

Requirements:

  • Python 3.8 or higher
  • a Redis instance with the RedisGraph module (local, remote or via Docker)
  • not strictly necessary, but recommended: RedisInsight for visualizing the query results

Install Pycograph from PyPI:

pip install pycograph

Start a Redis instance with the RedisGraph module and RedisInsight. E.g. via Docker containers:

docker run -d -p 6379:6379 redislabs/redismod
docker run -d -v redisinsight:/db -p 8001:8001 redislabs/redisinsight:latest

Visit your RedisInstance at http://localhost:8001 in a browser.
Connect to your local Redis database.

Create a RedisGraph model of your project's code with the pycograph load command:

pycograph load --project-dir ~/code/your-project --test-types

By default, if you don't provide the --project-dir option, Pycograph tries to find Python code in the current working directory.

Run a query in RedisInsight. E.g.

GRAPH.QUERY "your-project" "MATCH (n) return n"

To see some more advanced queries, check out the examples at pycograph.com

Options

  • --project-dir: The root directory of the Python project you want to analyze. If you omit this option, Pycograph will search for .py files in your current working directory.
  • --graph-name: Specifies the name of the generated graph. Default: the name of the project directory.
  • --overwrite: If a graph with this name exists overwrite it. If you don't provide this flag, the new nodes and edges will be appended to the graph.
  • --test-types: Determine the types of tests based on the subdirectories of the tests directory.
  • --redis-host: The host of the Redis instance. Default: localhost
  • --redis-port: The port of the Redis instance. Default: 6379
  • --version: Print Pycograph version and exit.

Limitations

Pycograph is in beta version.

It creates a basic model with focus on the relationships betweeen the different parts of the code base. Even that model might be incomplete, ignoring some less common syntax. The goal is to provide some useful insight, not to create an exhaustive model.

If Pycograph finds a syntax error, it skips the module containing the syntax error and tries to build a model from the rest of the code base.

Below are some of the limitations. If you bump into other limitations, please open a GitHub issue.

Imports

The following imports will be ignored by Pycograph:

  • imported external packages
  • import * syntax
  • variables
  • globals

Calls

  • All the limitations of the imports.
  • Resolving longer calls of more than 2 levels.

Other Known Limitations

  • No support for .py files containing Jinja templates (e.g. cookiecutter)
  • Inner functions are ignored.

How Does It Work?

Pycograph architecture

Libraries used:

  • ast module of the Python standard library for the abstract syntax tree
  • Pydantic both for the models of the intermediate objects and for the settings
  • redisgraph-py for creating the RedisGraph model
  • typer for the command line interface

Contributing

see the Contributing guide

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pycograph-0.2.8.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pycograph-0.2.8-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file pycograph-0.2.8.tar.gz.

File metadata

  • Download URL: pycograph-0.2.8.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.9.1 Linux/5.8.0-50-generic

File hashes

Hashes for pycograph-0.2.8.tar.gz
Algorithm Hash digest
SHA256 3077a2ed7ca8b5844c5c16d8316652f7b9d64231cf0bc75dce3e95f5600b554a
MD5 0b1efd65d8ab90e8fb198fd837e64929
BLAKE2b-256 0152b7704926b0b13fccde0cd134b0b4bb0ebbcf90f36f532683ed83a45ca3a6

See more details on using hashes here.

File details

Details for the file pycograph-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: pycograph-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.6 CPython/3.9.1 Linux/5.8.0-50-generic

File hashes

Hashes for pycograph-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 9984fdadc0611e7c7ed4d2ab3ca3d489c418de1b9a2ec28b6a1c9ba2d71301b7
MD5 99d7e9170891b398830453f4364fe4a6
BLAKE2b-256 c3952ede0d625acecfea8739c987db2811bd0bd1c7300d75b3e92bb33f0574d4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page