Don't tell your colleagues about deptry, take the afternoon off and tell your manager you manually removed each dependency one by one and ran the unit tests to check if the dependency was needed ;)
Good question, I have not looked into this myself yet. I would say; definitely, since it uses the dependencies from a `requirements.in` or a `pyproject.toml` file to generate a set of locked dependencies. Since `deptry` supports both formats, this should be no problem.
One thing to keep in mind, that would also be good for `deptry` to think about; if users decide to create a `requirements.txt` file from a `requirements.in` file, `deptry` will automatically use the `requirements.txt` file. However, this is wrong: It should use the `requirements.in` file, since the `requirements.txt` file also contains the transitive dependencies. Users can change this using the `requirements-txt` flag though (https://fpgmaas.github.io/deptry/usage/#requirements-txt).
Thanks for raising this, I will probably create an issue in our project to see how we should feal with this :)
If I understand your question correctly; no, that is out of scope for deptry. Many of the dependency management tools already provide a way to do so, e.g. for PDM `pdm list --tree`.
I am not aware of functionality within VS Code that does the same thing as `deptry` does. What most IDE's support is removing unused imports, which sounds similar but is different from what deptry aims to do: deptry tries to remove unused dependencies. So if you have e.g. `pandas` in your `requirements.txt`, but you never import (from) `pandas` in your project, `deptry` will tell you that you should remove it from your `requirements.txt`. Does that answer your question?
This is a bit more useful than things like vscode or flake8 (my preferred option) telling you that you "import xxx" but don't use it.
I'd love a deeper way to identify and selectively reduce the cruft from projects though. For example currently I have about 180 dependencies in my project's .venv - most of them transitive.
These include things like the google-auth library when there is no code in my project that would ever need to talk to Google.
Mostly this is just wasteful and not a big issue, but then come the conflicting dependencies you need to resolve by pinning version numbers. This is doubly annoying if you have no idea what the dependency is needed for or even if it's needed at all.
This is not just a python issue, it's apparent in all languages I've worked in.
This is not an issue when using `deptry`; it does not only match the import name against the dependency name; it first tries to find the modules that are provided by the dependency `beautifulsoup4`. If you run `deptry -v .`, you can see this in the verbose logs:
`
Dependency 'beautifulsoup4' with top-levels: {'bs4'}.`
Hi!
I have recently been working on a project called `deptry`, a command line tool to check for issues in the dependencies of Python projects. It can be used to find obsolete, missing, transitive and misplaced development dependencies. It supports the following types of projects:
- Projects that use Poetry and a corresponding pyproject.toml file
- Projects that use a requirements.txt file according to the pip standards
I am quite happy with the project in its current form, but I also realise there is still a lot of room left for improvement. Therefore, I hope some people are willing to give it a try and provide me with feedback. So; if you have a project with a long list of dependencies and a little bit of spare time on your hands, please give it a try and let me know what you think!
If you encounter any issues, find a bug, or have any other form of feedback, please don't hesitate to raise an issue in the GitHub repository, or leave a comment here.
I have recently been working on a project called `deptry`, a command line tool to check for issues in the dependencies of Python projects. It can be used to find obsolete, missing, transitive and misplaced development dependencies. It supports the following types of projects:
- Projects that use Poetry and a corresponding pyproject.toml file
- Projects that use a requirements.txt file according to the pip standards
I am quite happy with the project in its current form, but I also realise there is still a lot of room left for improvement. Therefore, I hope some people are willing to give it a try and provide me with feedback. So; if you have a project with a long list of dependencies and a little bit of spare time on your hands, please give it a try and let me know what you think!
If you encounter any issues, find a bug, or have any other form of feedback, please don't hesitate to raise an issue in the GitHub repository, or leave a comment here.