{"id":13740172,"url":"https://github.com/tweag/FawltyDeps","last_synced_at":"2025-05-08T19:35:52.657Z","repository":{"id":142628904,"uuid":"574887974","full_name":"tweag/FawltyDeps","owner":"tweag","description":"Python dependency checker","archived":false,"fork":false,"pushed_at":"2025-05-06T13:13:51.000Z","size":18769,"stargazers_count":245,"open_issues_count":78,"forks_count":19,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-06T14:36:57.342Z","etag":null,"topics":["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/tweag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-06T09:46:33.000Z","updated_at":"2025-05-06T13:13:22.000Z","dependencies_parsed_at":"2023-11-10T17:29:52.220Z","dependency_job_id":"77fde0dc-a180-4966-8107-5ef5b309261e","html_url":"https://github.com/tweag/FawltyDeps","commit_stats":null,"previous_names":[],"tags_count":28,"template":false,"template_full_name":"tweag/project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tweag%2FFawltyDeps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tweag%2FFawltyDeps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tweag%2FFawltyDeps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tweag%2FFawltyDeps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tweag","download_url":"https://codeload.github.com/tweag/FawltyDeps/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253135691,"owners_count":21859682,"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":["python"],"created_at":"2024-08-03T04:00:43.864Z","updated_at":"2025-05-08T19:35:52.631Z","avatar_url":"https://github.com/tweag.png","language":"Python","funding_links":[],"categories":["Python","Packaging \u0026 Project Management"],"sub_categories":[],"readme":"[![PyPI Latest Release](https://img.shields.io/pypi/v/fawltydeps.svg)](https://pypi.org/project/fawltydeps/) [![Supported Python versions](https://img.shields.io/pypi/pyversions/fawltydeps.svg)](https://pypi.org/project/fawltydeps/) ![Build](https://img.shields.io/github/actions/workflow/status/tweag/fawltydeps/ci.yaml) [![Licence](https://img.shields.io/pypi/l/fawltydeps.svg)](https://pypi.org/project/fawltydeps/) [![Code of conduct](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md) [![Discord channel](https://img.shields.io/discord/1174731094726295632)](https://discord.gg/V2d9xpgD4D)\n\n# FawltyDeps\n\nFawltyDeps is a dependency checker for Python that finds _undeclared_ and/or\n_unused_ 3rd-party dependencies in your Python project.\nThe name is inspired by the Monty Python-adjacent\n[Fawlty Towers](https://en.wikipedia.org/wiki/Fawlty_Towers) sitcom.\n\n📝 Full documentation available at: [tweag.github.io/FawltyDeps](https://tweag.github.io/FawltyDeps/)\n\n![FawltyDeps demo](https://github.com/tweag/FawltyDeps/raw/main/docs/images/fawltydeps_demo_tqdm.gif)\n\nWe [invite you](https://discord.gg/V2d9xpgD4D) to join our [Discord channel](https://discord.com/channels/1174731094726295632/1176462512212951090)! It's a great place to ask questions, share your ideas, and collaborate with other contributors.\n\n\n\n## Key Concepts\n\n- **_undeclared_ dependency**: a package that's used (in particular, `import`ed) by a project and which lacks a corresponding declaration to ensure that it's available.\n  For example, you `import numpy`, but you've forgotten to include `numpy` in your `requirements.txt`.\n  Pragmatically, this means the project is prone to runtime errors.\n- **_unused_ dependency**: a package that's declared as necessary for a project but which is never used by project code.\n  For example, you have `numpy` listed in your `requirements.txt`, but you never actually `import numpy`.\n  Pragmatically, this means that project installation may consume more space than needed and will be more likely to break with future software releases; in short, these are costs paid for no benefit.\n\nYour project dependencies may look like this:\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/fd_dependencies.png\" width=\"800px\" style=\"max-width: 800px; height: auto;\"\u003e\n\u003c/p\u003e\n\nBut FawltyDeps is all about helping you get to this perfect green spot:\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/images/fd_dependencies_ideal.png\" width=\"400px\" style=\"max-width: 400px; height: auto;\"\u003e\n\u003c/p\u003e\n\n## Installation\n\nThe library is distributed with PyPI, so simply:\n\n```sh\npip install fawltydeps\n```\n\nor any other way to install Python packages from PyPI should be enough to make it available in your environment.\n\nConsider adding `fawltydeps` to your development dependencies, to help you catch undeclared and unused dependencies in your projects.\n\n## Usage\n\nTo check the project in the current directory run:\n\n```sh\nfawltydeps\n```\n\nThis will find imports in all the Python code under the current directory,\nextract dependencies declared by your project, and then report\n[_undeclared_ and _unused_ dependencies](#key-concepts).\n\n\n## Development\n\nFor details on setting up your development environment, please refer to the\ncontributing guidelines of how to [set up your development environment](./docs/CONTRIBUTING.md#set-up-your-development-environment)\nin our [CONTRIBUTING.md](./docs/CONTRIBUTING.md) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftweag%2FFawltyDeps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftweag%2FFawltyDeps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftweag%2FFawltyDeps/lists"}