DFSG NEW Queue

DFSG, Licensing & New Packages Team

python-brutils 2.5.0-1

Package Information

DescriptionSolving daily problems in Brazilian business app development

A set of libraries for the data every Brazilian system handles: CPF, CNPJ, CEP, license plates, phone numbers, boletos and more. They validate, format, parse and generate that data.

MaintainerPaulo Henrique de Lima Santana (phls) <phls@debian.org>
Changed ByPaulo Henrique de Lima Santana (phls) <phls@debian.org>
Sponsorphls@debian.org
Distributionunstable
Architectureall
Closes#1151642
Trackerhttps://tracker.debian.org/pkg/python-brutils
Uploaded2 hours ago

New Package Report

.changes◂
Changed-ByPaulo Henrique de Lima Santana (phls) <phls@debian.org>
Architecturesource all
Distributionunstable
DateWed, 21 Oct 2026 17:15:24 -0300
Sourcepython-brutils
Version2.5.0-1
Changelog◂
python-brutils (2.5.0-1) unstable; urgency=medium
 .
   * Initial release. (Closes: #1151642).
.dsc◂
Sectionpython
Priorityoptional
Componentmain
Package-Listpython3-brutils deb python optional arch=all
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://pypi.org/project/brutils/#files
Upstream-Name: brutils
Upstream-Contact: Brazilian Utils <cumbucadev@brazilian-utils.com.br>

Files: CHANGELOG.md
       CODE_OF_CONDUCT.md
       CODE_OF_CONDUCT_EN.md
       CONTRIBUTING.md
       CONTRIBUTING_EN.md
       CORE_TEAM.md
       CORE_TEAM_EN.md
       MAINTAINING.md
       Makefile
       README.md
       README_EN.md
       brutils/__init__.py
       brutils/cep.py
       brutils/cnh.py
       brutils/cnpj.py
       brutils/cpf.py
       brutils/currency.py
       brutils/data/cities_code.json
       brutils/data/enums/__init__.py
       brutils/data/enums/better_enum.py
       brutils/data/enums/months.py
       brutils/data/enums/uf.py
       brutils/data/legal_process_ids.json
       brutils/date_utils.py
       brutils/email.py
       brutils/exceptions/__init__.py
       brutils/exceptions/cep.py
       brutils/ibge/__init__.py
       brutils/ibge/municipality.py
       brutils/ibge/uf.py
       brutils/legal_nature.py
       brutils/legal_process.py
       brutils/license_plate.py
       brutils/passport.py
       brutils/phone.py
       brutils/pis.py
       brutils/renavam.py
       brutils/schemas/__init__.py
       brutils/schemas/address.py
       brutils/voter_id.py
       codecov.yml
       old_versions_documentation/README.md
       old_versions_documentation/v1.0.1/ENGLISH_VERSION.md
       old_versions_documentation/v1.0.1/PORTUGUESE_VERSION.md
       poetry.lock
       pyproject.toml
       requirements-dev.txt
       tests/__init__.py
       tests/ibge/__init__.py
       tests/ibge/test_municipality.py
       tests/ibge/test_uf.py
       tests/license_plate/__init__.py
       tests/license_plate/test_is_valid.py
       tests/license_plate/test_license_plate.py
       tests/phone/__init__.py
       tests/phone/test_is_valid.py
       tests/phone/test_phone.py
       tests/test_cep.py
       tests/test_cnh.py
       tests/test_cnpj.py
       tests/test_cpf.py
       tests/test_currency.py
       tests/test_date_utils.py
       tests/test_email.py
       tests/test_imports.py
       tests/test_legal_nature.py
       tests/test_legal_process.py
       tests/test_passport.py
       tests/test_pis.py
       tests/test_renavam.py
       tests/test_voter_id.py
       .flake8
       .githooks/pre-push
       .github/CODEOWNERS
       .github/FUNDING.yml
       .github/ISSUE_TEMPLATE/nova-funcionalidade-ð???.md
       .github/ISSUE_TEMPLATE/reportar-um-bug-ð???.md
       .github/dependabot.yml
       .github/pull_request_template.md
       .github/workflows/autoassign-issue-v1.yml
       .github/workflows/check-lint.yml
       .github/workflows/close-stale-issues-v1.yml
       .github/workflows/publish-to-production.yml
       .github/workflows/run-tests.yml
       .github/workflows/validate-pr-title-v1.yml
       .gitignore
Copyright: 2017-2026, Brazilian Utils <cumbucadev@brazilian-utils.com.br>
License: MIT
Comment:
 Using license as found in LICENSE file.

Files: debian/*
Copyright: 2026 Paulo Henrique de Lima Santana (phls) <phls@debian.org>
License: MIT

License: MIT
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
 to deal in the Software without restriction, including without limitation
 the rights to use, copy, modify, merge, publish, distribute, sublicense,
 and/or sell copies of the Software, and to permit persons to whom the
 Software is furnished to do so, subject to the following conditions:
 .
 The above copyright notice and this permission notice shall be included
 in all copies or substantial portions of the Software.
 .
 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

DFSG Assistant LLM REVIEW 2 blocker, 0 important, 1 minor

This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.

Reviewed 0 hours ago.

Report◂

DFSG NEW review for python-brutils version 2.5.0-1

Summary

  • Licensing is DFSG-compliant and debian/copyright is accurate: No
  • Packaging is of good quality: Yes
  • Issues: 2 blocker, 0 important, 1 minor
  • debian/watch: version 5
  • debian/copyright: machine-readable
  • Scan before the review: nothing found

Licensing

The licensing is DFSG-compliant: every source, test and data file is plain MIT (LICENSE text matches), with no non-free terms. However debian/copyright, while in correct DEP-5 format, does not accurately cover every file: the top-level LICENSE file is omitted from the single exhaustive Files stanza (there is no Files: * catch-all), and the two .github/ISSUE_TEMPLATE entries are listed with mojibake file names ("ð???") that do not match the actual emoji-named files, leaving them uncovered by any stanza. The prescan found no built/binary files and all declared copyright holders are named.

Packaging

Packaging is good quality and consistent with current practice: debhelper-compat 14, dh-sequence-python3/single-binary + pybuild-plugin-pyproject, pure-python Architecture: all, Standards-Version 4.7.4, autopkgtest template, hand-written manpage. Build/runtime deps (python3-holidays, python3-num2words) match what brutils actually imports. Only real runtime-dependency nit is inherited from upstream metadata (coverage declared as a runtime dep of the library). Nothing blocking.

Issues

1. [blocker] [licensing] LICENSE file is not covered by any Files stanza

  • Files: LICENSE, debian/copyright (Files stanza)
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/copyright has only an exhaustive Files list and Files: debian/*; the top-level LICENSE ("Copyright (c) 2023 Brazilian Utils", full MIT text) is not in either stanza and there is no Files: * catch-all, so LICENSE matches no stanza.
  • Problem: debian/copyright must describe every file in the source; the license text file itself is left without a copyright/license record.
  • Fix: Add LICENSE to the main Files stanza (or add a Files: * catch-all), and name Brazilian Utils as its Copyright holder.

2. [blocker] [licensing] ISSUE_TEMPLATE filenames are mojibake and don't match the files

  • Files: debian/copyright .github/ISSUE_TEMPLATE/* entries, .github/ISSUE_TEMPLATE/nova-funcionalidade-🌟.md, .github/ISSUE_TEMPLATE/reportar-um-bug-🐛.md
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/copyright lists .github/ISSUE_TEMPLATE/nova-funcionalidade-ð???.md and .../reportar-um-bug-ð???.md, but the actual files are nova-funcionalidade-🌟.md and reportar-um-bug-🐛.md.
  • Problem: The emoji bytes were corrupted (ð???) when the file was written, so these Files patterns match no existing file and the two files are not covered by any stanza (no catch-all).
  • Fix: List the real file names (or use Files: .github/ISSUE_TEMPLATE/*).

3. [minor] [packaging] Runtime dependency on python3-coverage, a test-only tool

  • Files: pyproject.toml ([tool.poetry.dependencies])
  • Basis: inferred from what was read, not seen directly
  • Evidence: Upstream places coverage = "^7.2.7" in [tool.poetry.dependencies], so the built dist-info METADATA carries Requires-Dist: coverage and python3-brutils pulls python3-coverage as a runtime dependency; brutils source never imports coverage.
  • Problem: A coverage tool becomes a spurious runtime dependency, inflating the binary's dependency tree; it belongs only in the test group.
  • Fix: Optionally have the maintainer drop coverage from runtime deps (it is already a Build-Depends and test dependency); note this mirrors upstream metadata.

Verified

  • Read debian/copyright in full; format is machine-readable DEP-5 1.0, with a single exhaustive Files stanza + Files: debian/* and a standalone MIT License paragraph (no Files: * catch-all).
  • grep for Copyright/(C)/©/SPDX/licence wording across the whole tree found only LICENSE and debian/copyright; no source file carries its own header, consistent with licensing via the top-level MIT LICENSE.
  • LICENSE full text is standard MIT and matches the License paragraph in debian/copyright.
  • prescan author check: every copyright holder found in the source is named in debian/copyright (Brazilian Utils); no files on the built/non-free/minified list.
  • All brutils/.py, data/.json, tests/ files and .github/.githooks files in the tree correspond to entries in the main Files stanza (emojis and LICENSE excepted as reported).
  • The .quilt_series, applied-patches, .quilt_patches, .version files and .pc/ are quilt/dpkg unpack bookkeeping, not shipped source.
  • Packaging: control, changelog (initial release, Closes #1151642), rules (dh --buildsystem=pybuild), source/format 3.0 (quilt), upstream/metadata, docs, manpages, clean, and the generated manpage all read and consistent with debhelper 14 and Standards-Version 4.7.4.
  • brutils imports holidays and num2words (brutils/date_utils.py, currency.py), matching python3-holidays/python3-num2words Build-Depends; Testsuite: autopkgtest-pkg-python supplies the test hook.
  • No debian/patches (none needed), no maintainer scripts, no debian/tests/control beyond the autopkgtest template.
  • uscan found the packaged version as the newest upstream release (upstream 2.5.0, packaged 2.5.0).

Not confirmed

  • Did not build the package or run its tests; no build/test failure suspected from the tree.
  • Commented-out Vcs-* fields: package not yet on salsa; acceptable for an initial upload, so not reported.

Proposed changes

None.

Uploader's response to the LLM review

Held for the uploader's response until 2026-10-23 21:14 UTC, because the review found serious issues. It is not shown in the review lists until then, or until the uploader comments.

Back to Dashboard | View all reviews for this package