Releases: tweag/FawltyDeps
v0.18.0
With this release, FawltyDeps adds support for Conda and Pixi projects! FawltyDeps will now parse dependency declarations in environment.yml
and pixi.toml
files, as well as Pixi fields in pyproject.toml
. Note that if your Conda/Pixi project includes many non-Python dependencies, for now these are likely to show up as unused dependencies in FawltyDeps' analysis.
If your project uses Conda or Pixi, please give FawltyDeps v0.18.0 a try. We're always happy to receive feedback on our Discord channel or our issue tracker.
What's Changed
- Preliminary support for Pixi projects using pyproject.toml by @jherland in #455
- Preliminary support for Pixi projects using pixi.toml by @jherland in #456
- Add link to FawltyDeps GItHub Action in FAQ by @obscurerichard in #461
- Initial support for environment.yml files by @jherland in #457
New Contributors
- @obscurerichard made their first contribution in #461
Full Changelog: v0.17.0...v0.18.0
v0.17.0
The highlight of this release is that the FawltyDeps --install-deps
mode will now use uv
(when available) instead of pip
to manage the temporary virtualenv. This makes it 2x - 10x faster, depending on the scenario. In particular, FawltyDeps will benefit from uv
's local cache of downloaded packages, so repeated use of --install-deps
on the same project is now ⚡lightning fast⚡.
Under the hood FawltyDeps moved from setuptools
to packaging
for parsing requirements strings. This change should not be visible to the user, but we care deeply about staying up to date with the Python packaging ecosystem, and following the lead of the PyPA.
Join our new Discord channel. This platform is dedicated to technical discussions, knowledge sharing, and real-time collaboration within the FawltyDeps community.
What's Changed
parse_setup_py
: Handle string dependency when we expect list of strings by @jherland in #440- Use
uv
instead ofpip
to manage virtualenvs by @jherland in #432 - Replace
pkg_resources
dependency withpackaging.requirement
by @jherland in #445
Full Changelog: v0.16.0...v0.17.0
Refer to the our README.md
or fawltydeps --help
for more documentation.
v0.16.0
This release extends our recent feature to exclude parts of your directory structure when running FawltyDeps: You can now make FawltyDeps read exclude patterns from another file, with the new --exclude-from option. As with --exclude
the exclude patterns follow the gitignore-style format and will cause matching paths to be skipped when traversing your project, and thus exclude them from FalwtyDeps' analysis. The exclude patterns apply to all input categories discovered by FawltyDeps (Python code, dependency declarations, and Python environments used to resolve import names provided by packages).
Otherwise, this release contains major updates to our test suite and development environment, to make FawltyDeps even more of a joy to work on. 😄
Join our new Discord channel. This platform is dedicated to technical discussions, knowledge sharing, and real-time collaboration within the FawltyDeps community. .
What's Changed
- Allow reading exclude patterns from files (
--exclude-from
) by @jherland in #420 - real_projects/python-algorithms: Pin qiskit at <1.0 by @jherland in #421
- Fix skipped tests on Windows by @jherland in #412
- Dev/test environment: Support Python dependencies with pre-built binaries on Nix by @jherland in #422
- Add the ruff linter by @jherland in #424
- Make ruff much stricter by @jherland in #425
- Remove pylint by @jherland in #426
- Use
ruff format
instead ofblack
by @jherland in #427 - Update Discord invitation link. by @mknorps in #436
Full Changelog: v0.15.0...v0.16.0
Refer to the project's README.md
or fawltydeps --help
for more documentation.
v0.15.0
This release introduce a much-requested feature to exclude parts of your directory structure when running fawltydeps
. The new --exclude
option takes gitignore-style patterns and will cause the matching paths to be skipped when traversing your project, and thus excluded from FalwtyDeps' analysis. The exclude patterns apply to all input categories discovered by FawltyDeps (Python code, dependency declarations, and Python environments used to resolve import names provided by packages).
Join Our New Discord Channel. This platform is dedicated to technical discussions, knowledge sharing, and real-time collaboration within the FawltyDeps community. .
What's Changed
- Support exclude patterns by @jherland in #388
- Integrate gitignore_parser into FawltyDeps by @jherland in #391
- Fixes for various
--exclude
usability issues by @jherland in #415
Full Changelog: v0.14.0...v0.15.0
Refer to the project's README.md
or fawltydeps --help
for more documentation.
v0.14.0
The main feature of this release is the Windows and MacOS support.
FawltyDeps was originally developed on a Unix-based systems. MacOS support was straightforward, involving primarily an expansion of the test matrix. Support for Windows included:
- Making sure file paths are system-agnostic
- Various changes in the test suite, including the way FawltyDeps and other scripts are invoked
- The way virtual environments are discovered.
Currently, a Windows user can both develop and use FawltyDeps 🎉.
🙌 Community Spotlight: Thanks to @0x26res's input (issue #408), we've relaxed version constraints in our core dependencies (resolved in #409). This sparked vital discussions (summarized in #411) about optimizing our dependency version configurations.
Join Our New Discord Channel. This platform is dedicated to technical discussions, knowledge sharing, and real-time collaboration within the FawltyDeps community. .
What's Changed
- Update our Python project metadata by @jherland in #396
- Added reference to the FawltyDeps Discord channel by @mknorps in #400
- Loosen version constraint on core dependencies and re-pin lock file by @jherland in #409
- MacOS and Windows support by @mknorps in #397
Full Changelog: v0.13.3...v0.14.0
Refer to the project's README.md
or fawltydeps --help
for more documentation.
v0.13.3
This release introduces a slight change in how FawltyDeps finds Python environments (used for resolving declared dependencies into provided import names). Specifically the change regards the use of the current Python environment (i.e. the one in which FawltyDeps itself is installed and running):
Since v0.12, we would not use this environment if any other Python environment was found (either via --pyenv
or otherwise via searching inside your project). This would still be sufficient in the relatively common case where you (a) run fawltydeps
with default settings, and (b) FawltyDeps is installed in the same environment as your project dependencies, and (c) this environment lives outside your project directory (e.g. like Poetry does by default). However, if you add another complicating factor: (d) another virtualenv is found inside your project and this happens to not contain your project dependencies, then FawltyDeps would prefer this environment over the current environment, and dependency resolution would suffer.
We have now changed the rules to always include the current environment in the dependency resolution (but at a lower priority than any other Python environments given with --pyenv
or found in your project). The result should be improved dependency resolution in the above corner case, but otherwise the observed behavior should remain unchanged.
Otherwise, in this release, and thanks to @msabramo, we have revamped the pre-commit
rules that come with FawltyDeps. These will now give more accurate results when there are untracked files in your tree that would otherwise affect FawltyDeps' calculation of undeclared and unused dependencies.
What's Changed
- Reintroduce current Python environment as a separate level in our resolver stack by @jherland in #394
- Separate
check-undeclared
,check-unused
pre-commit hooks by @msabramo in #386 - Preliminary refactoring before
--ignore
feature by @jherland in #387
New Contributors
Full Changelog: v0.13.2...v0.13.3
Refer to the project's README.md
or fawltydeps --help
for more documentation.
v0.13.2
In this release, we've focused on fine-tuning and enhancing the compatibility and functionality of our project.
Notable updates include better recognition of requirements.txt
, support for Python v3.12, and enhanced handling of Python code with encoding declarations, collectively enhancing the overall performance and user experience.
What's Changed
- Relax regex re. recognizing requirements.txt by @jherland in #372
- Support Python v3.12 by @jherland in #383
- Handle Python code with embedded encoding declarations by @jherland in #384
- Bump version to 0.13.2 by @zz1874 in #389
Full Changelog: v0.13.1...v0.13.2
v0.13.1
In this release, we've introduced several key changes and enhancements to improve the functionality and maintainability of our project.
We've implemented the functionality of recognizing and automatically ignoring developer tools and type stubs from project dependencies.
Additionally, we've enhanced the flexibility of the project by adding support for dynamic dependencies in pyproject.toml
.
In addition to these changes, we've made several refinements to the project. We've prevented pip install
messages from polluting our JSON output. Our project now also supports Pydantic v2, keeping up with the latest developments in the Python ecosystem. We've also introduced a dedicated contributor guide, and we've improved code organization in tests/
.
What's Changed
- Add Support for Dynamic Dependencies in pyproject.toml by @zz1874 in #351
- TemporaryPipInstallResolver: Prevent
pip install
from polluting stdout by @jherland in #361 - Split the self_test part of the tests into another file by @zz1874 in #363
- Detect types stubs dependencies by @zz1874 in #362
- Support Pydantic v2 by @Nour-Mws in #364
- Add a contributor guide by @zz1874 in #366
- Add Zhihan as maintainer by @jherland in #367
- Exclude development tools from unused dependencies detection by @zz1874 in #365
- Bump version to 0.13.1 by @zz1874 in #369
Full Changelog: v0.13.0...v0.13.1
Refer to the project's README or fawltydeps --help
for more documentation.
v0.13.0
This is a major release that marks the completion of features for our mapping strategy milestone.
In particular, identity mapping and mapping from temporarily installed dependencies are now mutually exclusive and the latter can be invoked from the CLI with the --install-deps
option. The documentation has been updated to reflect all the changes to mapping we have made over the recent releases.
A new addition is the --list-sources
option, which makes it possible to examine the code, deps and Python environment sources used by FawltyDeps when analyzing your project.
This release also updates the CI and the test suite.
What's Changed
- ADD CLI option for --install-deps by @mknorps in #341
- Run fawltydeps against itself in CI by @zz1874 in #348
- Make identity mapping and install-deps mutually exclusive by @Nour-Mws in #349
- Add
--list-sources
to CLI by @jherland in #346 - Add tests to verify fallback to current venv when no other env is found by @jherland in #350
- Pin version of Poetry in CI to 1.5.1 to maintain support for Python 3.7 by @Nour-Mws in #354
- Update the documentation to match the current state of the mapping strategy by @Nour-Mws in #356
New Contributors
Full Changelog: v0.12.1...v0.13.0
Refer to the project's README
or fawltydeps --help
for more documentation.
v0.12.1
This is a fixup release to v0.12.0 where an important part of automatically discovering Python environments inside a project was omitted: By default, when no --pyenv
was passed, the set of paths to be searched for Python environments would remain empty. This has now been fixed with #344.
In addition we welcome a new feature: easily allowing FawltyDeps to be used as a pre-commit hook. Thanks to @multimeric for contributing!
What's Changed
- Add pre commit metadata by @multimeric in #343
- Fix Settings.pyenvs to actually use basepath by default by @jherland in #344
New Contributors
- @multimeric made their first contribution in #343
Full Changelog: v0.12.0...v0.12.1
Refer to the project's README
or fawltydeps --help
for more documentation.