Create a RedisGraph model of a Python code base.
Explore your Python code with graph queries
Pycograph creates a RedisGraph model of your Python code. You can:
- 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
--project-dir: The root directory of the Python project you want to analyze. If you omit this option, Pycograph will search for
.pyfiles 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
--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.
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.
The following imports will be ignored by Pycograph:
- imported external packages
- All the limitations of the imports.
Other Known Limitations
- No support for
.pyfiles containing Jinja templates (e.g. cookiecutter)
- Inner functions are ignored.
How Does It Work?
- 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
see the Contributing guide
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for pycograph-0.3.0-py3-none-any.whl