Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/felidz/carport
Dependency Graph from Python imports
https://github.com/felidz/carport
dependency-graph import-graph import-map python
Last synced: about 2 months ago
JSON representation
Dependency Graph from Python imports
- Host: GitHub
- URL: https://github.com/felidz/carport
- Owner: felidz
- License: apache-2.0
- Created: 2024-02-26T11:09:10.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-02-26T17:07:20.000Z (11 months ago)
- Last Synced: 2024-10-18T18:29:59.485Z (3 months ago)
- Topics: dependency-graph, import-graph, import-map, python
- Language: Jupyter Notebook
- Homepage: https://felidz.github.io/carport/
- Size: 764 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Carport
Dependen**c**y Gr**a**ph f**r**om **P**ython imp**ort**s (CARPORT).
[![PyPI
Version](https://img.shields.io/pypi/v/carport.svg?style=flat-square&color=blue)](https://pypi.org/project/carport/)
![GitHub
License](https://img.shields.io/github/license/felidz/carport.svg?style=flat-square&logo=github)![GitHub commit
activity](https://img.shields.io/github/commit-activity/t/felidz/carport.svg?style=flat-square&logo=github)
![GitHub code size in
bytes](https://img.shields.io/github/languages/code-size/felidz/carport.svg?style=flat-square&logo=github)
![GitHub top
language](https://img.shields.io/github/languages/top/felidz/carport.svg?style=flat-square)![GitHub last
commit](https://img.shields.io/github/last-commit/felidz/carport.svg?style=flat-square&logo=github&color=darkgreen)
![GitHub Actions CI Workflow
Status](https://img.shields.io/github/actions/workflow/status/felidz/carport/test.yaml?style=flat-square&logo=github&label=CI)
![GitHub Actions Docs Workflow
Status](https://img.shields.io/github/actions/workflow/status/felidz/carport/deploy.yaml?style=flat-square&logo=github&label=docs)## Installation
``` sh
pip install carport
```## Usage
``` python
from carport.core import ImportGraphdepg = ImportGraph(root = '..', project='carport')
# vars(depg)
`````` python
# specify irrelevant modules
ignore_nodes = ['io', 'IPython', 'pprint', 'subprocess']
`````` python
# export to dot string
dot = depg.to_dot(ignore_nodes=ignore_nodes)
display(dot)
```'digraph {\n"carport.vis";\n"carport.core";\nnetworkx;\npathlib;\nast;\nkroki;\ngraphviz;\n"carport.vis" -> "carport.core" [key=0];\nnetworkx -> "carport.core" [key=0];\npathlib -> "carport.core" [key=0];\nast -> "carport.core" [key=0];\nkroki -> "carport.vis" [key=0];\ngraphviz -> "carport.vis" [key=0];\n}\n'
``` python
# draw graph with graphviz
dotg = depg.draw_dot(ignore_nodes=ignore_nodes)
display(dotg)
```![](index_files/figure-commonmark/cell-5-output-1.svg)
``` python
# export to d2 string
d2 = depg.to_d2(ignore_nodes=ignore_nodes)
display(d2)
```'\n vars: { \n d2-config: { \n layout-engine: elk \n } \n }\n direction: right\n **.style.border-radius: 99\n *.style.font: mono\n \npathlib -> carport.core\ngraphviz -> carport.vis\nsubprocess -> carport.vis\nast -> carport.core\ncarport.vis -> carport.core\nkroki -> carport.vis\nnetworkx -> carport.core\nio -> carport.core\nIPython -> carport.vis\nio: null\nIPython: null\npprint: null\nsubprocess: null'
``` python
# draw graph with d2 or kroki
d2g = depg.draw_d2(ignore_nodes=ignore_nodes, app='d2')
display(d2g)
```![](index_files/figure-commonmark/cell-7-output-1.svg)
``` python
# for large graphs, you can use gravis
#! pip install gravisimport networkx as nx
import gravis as gvg = depg.to_nx(ignore_nodes=ignore_nodes)
layout = nx.circular_layout(g, scale=4*len(g)**1.05)
for node_id, (x, y) in layout.items():
node = g.nodes[node_id]
node['x'], node['y'] = x, y
gv.d3(g, edge_curvature=1, node_hover_neighborhood = True, use_edge_size_normalization=True)
```TODOs:
\[\] imports concerning `__init__.py`
\[\] `py_d2` to d2 (like `graphviz` to graphviz)
## Related
import-deps: [Github](https://github.com/schettino72/import-deps)
pydeps: [Github](https://github.com/thebjorn/pydeps)
snakefood3: [Github](https://github.com/Trim21/snakefood3)
kroki: [online editor](https://kroki.io/),
[python-interface](https://github.com/thorwhalen/kroki)D2: [doc](https://d2lang.com/tour/text), [online
editor](https://play.d2lang.com/),
[python-interface](https://github.com/MrBlenny/py-d2)## Statistics
![GitHub Repo
stars](https://img.shields.io/github/stars/felidz/carport.svg?style=flat-square&logo=github)
![PyPI -
Downloads](https://img.shields.io/pypi/dm/carport.svg?style=flat-square&logo=pypi)## Copyright
Copyright © 2024 onward Felidz. All rights reserved, with certain parts
of the project specifically licensed and subject to different terms and
conditions, e.g., source code of the project under the Apache-2.0
license; you may not use this project except in compliance with the
license.## Citation
BibTeX citation:
``` bibtex
@misc{felidz2024,
author = {Felidz},
title = {Carport},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/felidz/carport}}
}
```