Skip to content

Releases: fpgmaas/deptry

0.18.0

31 Jul 05:56
4c51dd9

Choose a tag to compare

What's Changed

Features

  • Support imports using importlib.import_module (#782)

New Contributors

  • @lmmx made their first contribution in #782

Full Changelog: 0.17.0...0.18.0

0.17.0

21 Jul 06:53
8b55766

Choose a tag to compare

What's Changed

Features

  • Add a new rule DEP005 to detect project dependencies that are in the standard library (#761)

Full Changelog: 0.16.2...0.17.0

0.16.2

05 Jul 11:58
083be86

Choose a tag to compare

What's Changed

Bug Fixes

  • Avoid crashing on PEP 621 and Poetry projects with no dependencies (#752)
  • Recursively search for Python files to detect local modules, to better support namespace packages (#753)

Miscellaneous

  • Provide macOS ARM wheels for PyPy (#691)

Full Changelog: 0.16.1...0.16.2

0.16.1

06 Apr 12:54
caa4e43

Choose a tag to compare

What's Changed

Bug Fixes

  • Skip type checking blocks whether future annotations are used or not (#662)

Full Changelog: 0.16.0...0.16.1

0.16.0

04 Apr 12:32
36a06f0

Choose a tag to compare

What's Changed

Breaking changes

typing.TYPE_CHECKING handling

Imports guarded by typing.TYPE_CHECKING when using from __future__ import annotations are now skipped. For instance:

from __future__ import annotations

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    # This import will not be extracted as it is guarded by `TYPE_CHECKING` and `from __future__ import annotations`
    # is used. This means the import should only be evaluated by type checkers, and should not be evaluated during runtime.
    import mypy_boto3_s3

See https://deptry.com/usage/#imports-extraction for more information.

requirements.in handling

On projects using pip requirements format for defining dependencies, if requirements_files option is not overridden,
deptry will first search for a requirements.in file before requirements.txt, to better support projects using
pip-tools and the like (which includes uv and Rye) out of the box. If you use requirements.in and want deptry to
use requirements.txt, you can either pass --requirements-files requirements.txt when invoking deptry, or set the
option in pyproject.toml:

[tool.deptry]
requirements_files = ["requirements.txt"]

Features

  • Skip type checking blocks when parsing imports (#652)
  • Search for requirements.in before requirements.txt on projects using pip requirements format for dependencies (#641)

Bug Fixes

  • Show module name instead of library name when reporting DEP003 (#644
  • Better support for notebooks by handling magic commands and line continuations (#656)

Full Changelog

0.15.0...0.16.0

0.15.0

24 Mar 21:31
e51a86a

Choose a tag to compare

What's Changed

Breaking changes

  • In release 0.12.0, we announced the deprecation of the following flags:

    • --ignore-unused
    • --ignore-obsolete
    • --ignore-missing
    • --ignore-misplaced-dev
    • --ignore-transitive
    • --skip-unused
    • --skip-obsolete
    • --skip-missing
    • --skip-misplaced-dev
    • --skip-transitive

    These flags are now no longer supported. If you are still using these flags and are planning to upgrade to this release, please refer to the release notes of 0.12.0 for instructions on how to migrate to the new method of configuration. (#596)

Deprecations

  • The options requirements-txt and requirements-txt-dev are replaced with requirements-files and requirements-files-dev, respectively, to provide better support for projects that use both a requirements.in and a requirements.txt. The legacy options will still be usable for the time being, with a warning being shown in the terminal, but they will be removed in a future release, so you are advised to migrate to the new ones. (#609)

Features

  • Implement the collection of all Python files to be scanned by deptry in Rust (#591)
  • Implement import extraction for notebooks in Rust (#606)
  • Use ruff's AST parser for import extraction from Python files. This also adds support for files with Python 3.12 f-string syntax, see PEP 701. (#615)
  • Improved logging of the detected imports and their locations when deptry is run in verbose mode (#627)
  • Introduce the --pep621-dev-dependency-groups flag that allows users to specify which groups under [project.optional-dependencies] are considered development dependencies (#628)

Bug Fixes

  • Add back the license classifier, which was lost during the transition from Poetry to PDM in (#624)

Miscellaneous

  • Remove upper bound on requires-python (#621)
  • Moved the documentation to deptry.com (#630)

Full Changelog

0.14.2...0.15.0

0.14.2

19 Mar 08:30
9cc6b0f

Choose a tag to compare

What's Changed

This release adds back MIT license classifier in package metadata, that was lost when changing the build backend (by @mkniewallner in #623).

Full Changelog: 0.14.1...0.14.2

0.14.1

18 Mar 13:59
6c73675

Choose a tag to compare

What's Changed

This release improves runtime performance of built wheels by about 5%, and reduces their size (by @mkniewallner in #594).

PyPy wheels are now also published on PyPI (by @edgarrmondragon in #612).

Bug fixes

  • Improve handling of comments in requirements.txt files by @fpgmaas in #588
  • Avoid process hanging on error when parsing Python files by @mkniewallner in #619

Full Changelog: 0.14.0...0.14.1

0.14.0

14 Mar 20:11
8e002b7

Choose a tag to compare

What's Changed

This release significantly improves the speed of deptry, particularly for large projects, by utilizing Rust to manage the parsing of Abstract Syntax Trees (AST) from .py files and to extract the import statements. For some benchmarks, see below:

Changes

Since the changes are all in the back-end, little has changed for the user other than the execution speed. The two minor notable changes are:

  • Improved identification of column identifier in imports detection. Where earlier the column identifier for an imported module foo in the line import foo would be 0, it now points to column 8

Available wheels on PyPi

Where earlier releases published a single .whl file to PyPi, with the move to Rust we now build and publish wheels for a variety of platforms and architectures. More specifically, wheel files for the following combinations are now available on PyPi:

  • Linux: ABI3 wheels for x86_64 and aarch64 architectures.
  • Windows: ABI3 wheels for the x64 architecture.
  • macOS: ABI3 wheels for x86_64 and aarch64 (Apple Silicon) architectures.

Alongside the ABI3 wheels, we provide a source distribution (sdist) package.

Full Changelog: 0.13.0...0.14.0

0.14.0a1

13 Mar 12:02
a13add1

Choose a tag to compare

0.14.0a1 Pre-release
Pre-release

This release speeds up deptry significantly, especially on large projects, by leveraging Rust to handle the parsing of the Abstract Syntax Trees (AST) from .py files and the extraction of import statements.

What's Changed

Full Changelog: 0.13.0...0.14.0a1