{"id":22728500,"url":"https://github.com/tilboerner/depx","last_synced_at":"2025-10-06T17:53:10.138Z","repository":{"id":56407147,"uuid":"175798229","full_name":"tilboerner/depx","owner":"tilboerner","description":"Examine and visualize dependencies used by Python modules 🔍","archived":false,"fork":false,"pushed_at":"2022-12-08T07:42:48.000Z","size":112,"stargazers_count":19,"open_issues_count":5,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-27T12:11:15.448Z","etag":null,"topics":["dependencies","graph","networkx","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tilboerner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-15T10:21:47.000Z","updated_at":"2021-04-22T19:57:15.000Z","dependencies_parsed_at":"2023-01-24T22:00:09.981Z","dependency_job_id":null,"html_url":"https://github.com/tilboerner/depx","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tilboerner%2Fdepx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tilboerner%2Fdepx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tilboerner%2Fdepx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tilboerner%2Fdepx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tilboerner","download_url":"https://codeload.github.com/tilboerner/depx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248788855,"owners_count":21161726,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependencies","graph","networkx","python"],"created_at":"2024-12-10T17:16:22.363Z","updated_at":"2025-10-06T17:53:05.104Z","avatar_url":"https://github.com/tilboerner.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Depx\n\n[![Build Status](https://api.travis-ci.org/tilboerner/depx.svg?branch=master)](https://travis-ci.org/tilboerner/depx)\n\n\nExamine and visualize dependencies used by Python modules.\n\nThis is a simple, exploratory prototype for now. The goal is to use explicit\n`import` statements in a module to identify the names of its dependencies. This\nwill not always produce a complete picture of all other code a module uses,\nsince there is a multitude of ways to import or reference other code\ndynamically. Idiomatic Django, for example, uses a number of them. Those are\nall out of scope, however, although some might get considered at a later time.\n\nIn this early stage, all functionality, structure and interfaces are subject to\nradical and surprising changes.\n\n\n## Dev setup\n\nYou're going to need [Poetry](https://python-poetry.org/) and\n[tox](http://tox.readthedocs.org/).\n\nAfter cloning the repo, set up the dev environment:\n\n    $ cd depx\n    $ poetry install --no-root\n\nRun tests:\n\n    $ make test\n\nLint:\n\n    $ make lint\n\nComprehensive test suite:\n\n    $ tox\n\nAdd dependencies:\n\n    $ poetry add [--dev] \u003cPACKAGE_NAME\u003e\n\n\n## Envisioned use cases\n\nThe project should enable the following use cases, but might do so by handing\noff the right kind of data to other software. If we do different things\nourselves, they should end up in different commands (or at least subcommands).\n\n* visualize dependencies of module, package or project\n* identify dependency cycles\n* help identify unused dependencies\n\n\n## Existing and potential functionality\n\nSketch of ideas. This is not meant as a plan, but to guide initial development.\n\n### Find dependencies\n\n- [x] identify all explicit imports a module makes\n- [x] same for whole packages\n- [x] same for arbitrary directories\n- [x] identify local imports (those are smelly)\n- [ ] distinguish built-in, 3rd party and local dependencies\n\n\n### Names\n\n- [x] show fully qualified names for importing module and dependency\n- [x] ability to show only top-level names\n- [x] resolve relative imports to proper names\n- [ ] resolve `*` imports\n\n\n### Output formats\n\n    depx my-awesome-project --format html\n\nThe identified dependencies are the edges of a directed graph. Output formats\nshould include several standard ways to consume such data.\n\n- [x] JSON\n- [x] GraphML\n- [x] browser-ready HTML with visualization\n- [x] Graphviz (`.dot`)\n- [ ] text with columns (to compose with Unix pipes)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftilboerner%2Fdepx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftilboerner%2Fdepx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftilboerner%2Fdepx/lists"}