Skip to content

Releases: tweag/FawltyDeps

v0.15.0

25 Jan 11:12
Compare
Choose a tag to compare

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

Full Changelog: v0.14.0...v0.15.0

Refer to the project's README.md or fawltydeps --help for more documentation.

v0.14.0

15 Jan 12:07
Compare
Choose a tag to compare

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

16 Nov 15:23
Compare
Choose a tag to compare

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

31 Oct 15:49
fd95ab7
Compare
Choose a tag to compare

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

Full Changelog: v0.13.1...v0.13.2

v0.13.1

18 Sep 18:45
165027c
Compare
Choose a tag to compare

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

28 Aug 15:36
ad9cb08
Compare
Choose a tag to compare

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

31 Jul 13:18
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v0.12.0...v0.12.1

Refer to the project's README or fawltydeps --help for more documentation.

v0.12.0

14 Jul 20:50
Compare
Choose a tag to compare

What's Changed

  • LocalPackageResolver: Handle multiple package dirs inside one Python env by @jherland in #318
  • New code for traversing directories by @jherland in #324
  • Prepare test suite for traversing Python environments by @jherland in #325
  • Allow isort >= 5.12 when running on Python > 3.7 by @jherland in #335
  • Change development status to 3- Alpha by @mknorps in #337
  • Teach FawltyDeps to automatically discover Python environments inside the project by @jherland in #326
  • Various cleanups after integrating Python environments into traverse_project by @jherland in #327
  • Test refactoring: fake_project fixture by @jherland in #333
  • Upgrade our dev env to use Python v3.11 by default by @jherland in #336

Full Changelog: v0.11.0...v0.12.0

Refer to the project's README or fawltydeps --help for more documentation.

v0.11.0

11 May 14:55
Compare
Choose a tag to compare

What's Changed

  • Fail execution if not all dependencies are resolved. by @mknorps in #320
  • Prepare for supporting multiple --pyenv options by @jherland in #313
  • Pin our importlib_metadata version (and some cosmetic fixes) by @jherland in #319
  • Test the resolver with the install_deps option by @Nour-Mws in #297
  • TemporaryPipInstallResolver: Handle pip install errors gracefully by @jherland in #323
  • Support multiple --pyenv options by @jherland in #321

Full Changelog: v0.10.0...v0.11.0

Refer to the project's README or fawltydeps --help for more documentation.

v0.10.0

26 Apr 10:14
Compare
Choose a tag to compare

What's Changed

User-visible improvements:

  • User defined mapping: add option and handling for multiple mapping files by @mknorps in #306
  • Add support for PEP582 __pypackages__ directories by @jherland in #312

Internal refactoring/improvements

  • Traverse refactor, part 1 by @jherland in #288
  • Add fawltydeps.__main__ module to allow 'python -m fawltydeps' by @jherland in #311
  • test_cmdline cleanups by @jherland in #310
  • Fix boolean representation and skip null values in generated toml config by @Nour-Mws in #300
  • Refactor resolver tests, transition to PBT by @Nour-Mws in #296

Full Changelog: v0.9.0...v0.10.0

Refer to the project's README or fawltydeps --help for more documentation.