Releases: fsfe/reuse-tool
v6.2.0
Added
- Added new file extensions and files:
file-magicis now supported as an additional module for detecting the
encoding of files. (#1264)- Support deprecated licences for
reuse download. (#606) - Markdown files which have frontmatter (i.e. yaml or toml between a
---block
at the start of the file) now get Python-like comments inside of the
frontmatter when annotating. (#1170)
Fixed
- When
file-magicis installed simultaneously withpython-magic, the tool
used to misbehave (read: crash), because either one of them could be imported
onimport magic. This misbehaviour no longer happens. (#1264) - Invalid SPDX license expressions are no longer recognized as used or missing
licenses. (#1254) clicktranslations are now correctly loaded. (#1267)
v6.1.2
v6.1.1
Changed
- In the Docker images, Alpine is bumped to
alpine:3.22and Debian to
debian:13-slim. (#1247)
Fixed
-
ASCII frames around comments were broken in v6.0.0. They now work again. The
sole condition is that the 'suffix' of a comment is identical to its 'prefix'.
For example:/*******************************************\ |* SPDX-License-Identifier: CC-BY-SA-4.0 *| \*******************************************/(#1249)
v6.1.0
This release adds a simple feature as a workaround for a bug that will be
resolved in a later version. The bug is described in
#1244, and can be summarised as: When
charset-normalizer is used to detect the encoding of a file, it will
erroneously detect a UTF-8 file as having no encoding (i.e. a binary file) when
the 2048th byte is a non-final byte of a multi-byte glyph.
You can run reuse as REUSE_ENCODING_MODULE=chardet reuse to circumvent this
bug. If you use pre-commit, you can use this snippet:
repos:
- repo: https://github.com/fsfe/reuse-tool
rev: v6.1.0
hooks:
- id: reuse
entry: env REUSE_ENCODING_MODULE=chardet reuseYou will not encounter this bug if your environment has libmagic available.
Added
- You can now specify the module that will be used for detecting the encoding of
files with theREUSE_ENCODING_MODULEenvironment variable. (#1245) - The Docker images and the pre-commit hooks now come bundled with all encoding
modules. (#1245) - The
--debugflag now tells you the detected encoding and detected newlines
of each file, as well as which encoding module is used. (#1246)
v6.0.0
This release contains a lot of refactoring regarding the parsing of files. The
most impactful details are that reuse lint now searches every file in its
entirety for REUSE information, tries to detect each file's encoding, and no
longer breaks when invalid SPDX License Expressions are detected.
Because files are now read in their entireties instead of just the first 4 KiB,
you may need to add REUSE-IgnoreStart and REUSE-IgnoreEnd tags to get rid of
false positives that were previously too deep into files for reuse to detect.
For package maintainers: This release removes, adds, and changes
dependencies. It merits running git diff v5.1.1..v6.0.0 pyproject.toml and
reading the 'Changed' section of this change log to see what changed.
Added
- Added new file extensions:
- A new criterion 'Invalid SPDX License Expressions' has been added to
reuse lint. Invalid expressions are SPDX License Expressions which are not
valid according to the grammar of the SPDX specification. (#1240)
Changed
- Python 3.9 support dropped. (#1219)
- The Python requirement for
reusenow no longer requires a lower major
version than 4. The requirement is now>=3.10instead of>=3.10,<4.
(#1219) - Dependency changes:
- Removed explicit dependency
boolean.boolean. It is now an implicit
dependency vialicense-expression. (#1240) - The dependency
python-magichas been added, alongside the optional
dependenciescharset-normalizerandchardet. So long as at least one of
these is installed, the program will work. (#1235) - The dependency
binaryornothas been removed. (#1235) - The minimum requirements of several dependencies have been updated. (#1235,
#1241)
- Removed explicit dependency
reuse lintnow always searches the entire file for REUSE information.
Previously, it only searched the first 4 KiB under most circumstances. (#1229)- The encodings of files are now detected before they are read or altered.
(#1235, #1218) - The 'Bad licenses' criterion in
reuse lintpreviously searched for bad
licenses in every single file. Now, only bad licenses inLICENSES/are
detected, which is more in line with the documentation. (#1240) - The behaviour of the
--yearoption toreuse annotateis now different.
Previously, you could define--year <year>multiple times. Now you can only
do so once, but the value may be a string containing multiple years or a range
of years. (#1145) reuse annotate --merge-copyrightsworks more efficiently now, capable of
better heuristics to detect years and year ranges. (#1145)reuse annotate --merge-copyrightsno longer adds spacing around the merged
year ranges. i.e.2017-2025, not2017 - 2025. (#1145)
Fixed
- Unparseable SPDX expressions in a file now no longer cause the collection of
REUSE information from that file to entirely fail. (#1240) - Files with carriage return (
\r) line endings are now correctly linted.
(#1235, #1226) - There used to be a specific scenario where
reuse lintwould read the
contents of an entire file into memory. This no longer happens.
reuse annotatewill still read the entire file into memory. (#1229) - Fixed formatting in
lintsubcommand help message. (#1212, #1236) - Fixed a case where, if a recognised file extension (such as
.blade.php) has
two or more components, it would not be correctly recognised. (#573) - Fixed a bug where, if
REUSE-IgnoreStartis the very first thing that appears
in a file, the subsequent text is not actually ignored. (#1229) - If using
reuse annotateto write to a file, the BOM is preserved if the
encoding is UTF-8, UTF-16, or UTF-32. (#1235, #384) - The summaries of
reuse lintare now sorted better. (#1241) - Several performance improvements. Local testing on a 12-core laptop suggests
speedup of up to 50%, but it may depend on your repository. (#1222, #1223,
#1230, #1241)
v5.1.1
v5.1.0
Added
- Added new file extensions:
- Added
--jsonflag to thesupported-licensessubcommand. (#1187)
Changed
- Revert
Cargo.lockto uncommentable. (#1169) reuse annotatepreviously would insert a newline after a header, which is
not always a desirable behavior. Instead of inserting a newline,
reuse annotatewill now respect the existing whitespace of the file where
the header is being placed. When the license header is being added to a file
for the first time, a space will be added after the license, but subsequent
updates to the header will leave the whitespace alone. (#1136)- Updated
spdx-license-list-datato v3.27.0.
v5.0.2
Fixed
- The release date for the v5.0.0 entry in the change log was wrong.
v5.0.1
Fixed
- Fix readthedocs build.
v5.0.0
This is a big release for a small change set. With this release, the tool
becomes compatible with
REUSE Specification 3.3, which is a very
subtly improved release of the much bigger version 3.2.
Added
- More file types are recognised:
- Added
lint-filesubcommand to enable running lint on specific files. (#1055) - Added shell completion via
click. (#1084) - Added Jujutsu VCS support. (#TODO)
- Added new copyright prefixes
spdx-string,spdx-string-c, and
spdx-string-symbol. (#979) - Support for Python 3.13. (#1092)
Changed
-
Bumped REUSE Specification version to
version 3.3. (#1069) -
Switched from
argparsetoclickfor handling the CLI. The CLI should still
handle the same, with identical options and arguments, but some stuff changed
under the hood. (#1084)Find here a small list of differences:
-his no longer shorthand for--help.--versionnow outputs "reuse, version X.Y.Z", followed by a licensing
blurb on different paragraphs.- Some options are made explicitly mutually exclusive, such as
annotate's
--skip-unrecognisedand--style, anddownload's--outputand
--all. - Subcommands which take a list of things (files, license) as arguments, such
asannotate,lint-file, ordownload, now also allow zero arguments.
This will do nothing, but can be useful in scripting. annotateandlint-filenow also take directories as arguments. This will
do nothing, but can be useful in scripting.
-
Changes to comment styles:
-
REUSE.tomlno longer needs a licensing header. (#1042) -
.gitkeepis no longer ignored, because this is not defined in the
specification. However, if.gitkeepis a 0-size file, it will remain ignored
(because 0-size files are ignored). (#1043) -
If
REUSE.tomlis ignored by VCS, the linter no longer parses this file.
(#1047) -
SPDX license and exception list updated to v3.25.0.
-
More
LICENSEandCOPYING-like files are ignored. Now, such files suffixed
by-anythingare also ignored, typically something likeLICENSE-MIT. Files
with the UK spellingLICENCEare also ignored. (#1041)
Removed
- Python 3.8 support removed. (#1080)
Fixed
- In
REUSE.toml, fixed the globbing of a single asterisk succeeded by a slash
(e.g.directory-*/foo.py). The glob previously did nothing. (#1078) - Increased the minimum requirement of
attrsto>=21.3. Older versions do
not import correctly. (#1044) - Performance greatly improved for projects with large directories ignored by
VCS. (#1047) - Performance slightly improved for large projects. (#1047)
- The plain output of
linthas been slightly improved, getting rid of an
errant newline. (#1091) reuse annotate --merge-copyrightsnow works more reliably with copyright
prefixes. This still needs some work, though. (#979)- In some scenarios, where a user has multiple
REUSE.tomlfiles and one of
those files could not be parsed, the wrongREUSE.tomlwas signalled as being
unparseable. This is now fixed. (#1047) - Fixed a bug where
REUSE.tomldid not correctly apply its annotations to
files which have an accompanying.licensefile. (#1058) - When running
reuse download SPDX-IDENTIFIER+, downloadSPDX-IDENTIFIER
instead. This also works forreuse download --all. (#1098)