python-pybreaker 1.4.1-1
Package Information
| Description | threadsafe pure-Python implementation of the Circuit Breaker pattern PyBreaker is a Python implementation of the Circuit Breaker pattern, described in Michael T. Nygard's book "Release It!". In Nygard's words, "circuit breakers exists to allow one subsystem to fail without destroying the entire system. This is done by wrapping dangerous operations (typically integration points) with a component that can circumvent calls when the system is not healthy". |
|---|---|
| Maintainer | Debian Python Team <team+python@tracker.debian.org> |
| Changed By | Alexandre Detiste <tchet@debian.org> |
| Sponsor | tchet@debian.org |
| Distribution | unstable |
| Architecture | all |
| VCS | git: https://salsa.debian.org/python-team/packages/python-pybreaker.git (browse) |
| Closes | #1151268 |
| Tracker | https://tracker.debian.org/pkg/python-pybreaker |
| Uploaded | 2 hours ago |
New Package Report
.changes
| Architecture | source all |
|---|---|
| Distribution | unstable |
| Date | Sat, 31 Oct 2026 14:16:10 +0100 |
| Source | python-pybreaker |
| Version | 1.4.1-1 |
| Changed-By | Alexandre Detiste <tchet@debian.org> |
Changelog
python-pybreaker (1.4.1-1) unstable; urgency=medium . * Initial upload (Closes: #1151268)
.dsc
| Section | python |
|---|---|
| Priority | optional |
| Component | main |
| Package-List | python3-pybreaker deb python optional arch=all |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: pybreaker
Source: https://github.com/danielfm/pybreaker
Files: *
Copyright: Daniel Martins <diddi@diddi.se>
License: BSD-3-Clause
Files: pw
Copyright: 2021 Ivo Houbrechts
License: Expat
Files: debian/*
Copyright: 2026 Alexandre Detiste <tchet@debian.org>
License: BSD-3-Clause
License: BSD-3-Clause
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
.
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
.
3. Neither the name of PyBreaker nor the names of its contributors may
be used to endorse or promote products derived from this software
software without specific prior written permission.
.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License: Expat
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 0 blocker, 1 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 2 hours ago.
Report
DFSG NEW review for python-pybreaker version 1.4.1-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: No - Packaging is of good quality: Yes
- Issues: 0 blocker, 1 important, 1 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
The licences themselves are free: the upstream code is BSD-3-Clause (LICENSE reproduced verbatim in debian/copyright, including the 'software software' typo) and the one bundled third-party tool script pw is MIT/Expat with its notice in the file. No non-free terms, no vendored library, no built or generated binaries that lack source. debian/copyright is nevertheless inaccurate in two places: Files: * names a holder name and address that contradict the upstream LICENSE and pyproject.toml, and the Files: pw stanza does not cover pw.bat and pw.lock, so those two pyprojectx files are described as Daniel Martins's BSD-3-Clause code.
Packaging
Standard, well-formed Debian Python Team packaging. debhelper compat 14 with dh $@ --buildsystem=pybuild, the PEP 517 plugin, pybuild-plugin-pyproject and python3-flit for the flit_core backend; test-only dependencies (pytest, tornado, fakeredis) are correctly marked <!nocheck>; Testsuite: autopkgtest-pkg-pybuild is dh-python's implicit test and needs no debian/tests/control. Standards-Version 4.7.4 matches the current Policy 4.7.4.1 in its first two components, single arch:all binary, Vcs-* and Homepage present, no patches, changelog sane. The empty Depends field is correct at compat 14, where dh_gencontrol adds the relationship substvars itself.
Issues
1. [important] [licensing] Files: pw does not cover pw.bat and pw.lock, which are pyprojectx files under Ivo Houbrechts' MIT licence, so Files: * misattributes them
- Files:
debian/copyright:9,debian/copyright:5-7,pw.bat,pw.lock,pw:1-10 - Basis: checked, in the package or with a reference tool
- Evidence:
Files: pw/Copyright: 2021 Ivo Houbrechts/License: Expat. copyright-format 6.9: "Patterns match pathnames that start at the root of the source tree. Thus, ‘Makefile.in’ matches only the file at the root of the tree" and a pattern has to contain a wildcard to reach further, sopwmatches only that one path.pw.batis the 2-line Windows shim@echo off/python "%~dp0pw" %*;pw.lockis the lock filepw --lockgenerates ([main]/requirements = [...]/hash = ...).pwis the pyprojectx wrapper, and pyproject.toml groups the three aspw*([tool.flit.sdist] exclude = [..., "pw*"]). - Problem: The two files fall through to
Files: *, which declares them BSD-3-Clause withCopyright: Daniel Martins, whereas they belong to the pyprojectx wrapper whose own header (pw:7,pw:9) saysCopyright (c) 2021 Ivo HoubrechtsandLicensed under the MIT license. debian/copyright therefore names the wrong holder and the wrong licence for two files in the source package, contrary to copyright-format 6.9's last-stanza-wins matching and to the requirement that the file describe the licensing of every file (Policy 12.5). - Fix: Widen the stanza to
Files: pw*(or listpw pw.bat pw.lock), keepingCopyright: 2021 Ivo HoubrechtsandLicense: Expat.
2. [minor] [licensing] Files: * Copyright gives Daniel Martins <diddi@diddi.se>, an address that appears nowhere in the source and contradicts LICENSE and pyproject.toml
- Files:
debian/copyright:6,LICENSE:1,pyproject.toml:6 - Basis: checked, in the package or with a reference tool
- Evidence: debian/copyright:
Copyright: Daniel Martins <diddi@diddi.se>; LICENSE:Copyright (c) 2010-2021, Daniel Fernandes Martins; pyproject.toml:{ name = "Daniel Fernandes Martins", email = "daniel.tritone@gmail.com" }. - Problem: The holder is named with a truncated name and an address that no file in the source contains, so the copyright statement does not identify the actual holder as upstream states him; the years (2010-2021) are also dropped. The copyright is correct in substance but the record is wrong for anyone who needs to contact the holder.
- Fix: Use
Copyright: 2010-2021, Daniel Fernandes Martins <daniel.tritone@gmail.com>in theFiles: *stanza.
Verified
- Prescan item
Ivo Houbrechts # # pw:7: accounted for —pw's header names that holder and the file is covered by theFiles: pwstanza withLicense: Expat, whose stand-alone text is the MIT text quoted in the header. The gap is only its two siblings (issue above). - Inventory covered the whole tree (16 files plus .github/, .pre-commit-config.yaml, .gitignore; .pc/ skipped as instructed): src/pybreaker/init.py, py.typed, tests/{init,pybreaker_test,typechecks}.py, README.rst, CHANGELOG, pyproject.toml, .github/{FUNDING.yml,workflows/*}, .pre-commit-config.yaml, .gitignore.
- No file in the tree carries a copyright or licence notice other than LICENSE,
pwand pyproject.toml'sLicense :: OSI Approved :: BSD Licenseclassifier; grep for Copyright/(C)/©/SPDX/Licensed under/permission grants/GNU/Apache/MPL/public domain found nothing else. README.rst has no licence section; CHANGELOG's 'Thanks @...' lines are credits, not holders. - No built files, minified code, archives, PDFs, images, fonts or bytecode in the tree;
pwis a plain Python script written by hand, not used by debian/rules and not installed in the binary. - No embedded third-party library: tornado and redis are optional runtime imports from system packages (
try: from tornado import gen/try: from redis import Redisin src/pybreaker/init.py), not vendored copies. - Tested licensing combination: BSD-3-Clause and MIT/Expat are both free and mutually compatible; nothing is non-commercial, no-modification or field-of-use restricted. Both full licence texts are in debian/copyright (BSD-3-Clause, Expat).
- Packaging files read in full: debian/control, rules, changelog, copyright, salsa-ci.yml, source/format, watch (not reviewed). No debian/patches, no install/links/docs files, no maintainer scripts.
- Build dependencies cover what the tests import: tests/pybreaker_test.py uses
from unittest import mock(stdlib), pytest,tornado.testing, fakeredis andredis.exceptions;apt-cache show python3-fakeredisconfirmsDepends: python3-redis, so no python3-mock and no separate python3-redis Build-Depends are missing. Testsuite: autopkgtest-pkg-pybuildis dh-python's implicit test: /usr/share/dh-python/pybuild-autopkgtest exists and runs thepybuildbuildsystem's autopkgtest command, so no debian/tests/control is needed.- pybuild-plugin-pyproject builds with
python -m build --skip-dependency-check --no-isolation --wheel(/usr/share/dh-python/dhpython/build/plugin_pyproject.py), so the flit_core backend must be installed;python3-flit(4.1.0-4) is Build-Depended on, andapt-cache showfinds no separate python3-flit-core or flit-core binary package in unstable or NEW. - Standards-Version 4.7.4 against the reviewing system's Policy 4.7.4.1: first two components equal, no issue. Distribution
unstable, version1.4.1-1, changelog closes #1151268, date valid for 31 Oct 2026. - Single
Architecture: allbinary python3-pybreaker carrying src/pybreaker and py.typed; no Depends field, which is correct at debhelper compat 14 (dhadds relationship substvars itself). - uscan found the packaged version as the newest upstream release (upstream
1.4.1, packaged1.4.1).
Not confirmed
- That python3-flit 4.1.0 in the archive really ships the
flit_corebackend thatpython -m build --no-isolationimports; the package lists contain no python3-flit-core binary, so this is assumed, and a clean build would show it.
Proposed changes
None.
Uploader's response to the LLM review
I fixed the tiny glitches on Salsa. I do not think that warrants a new upload for now.
— Alexandre Detiste (detiste-guest), 2 hours ago
I'm the maintainer for "flit"... so I know the tradoffs of this one package very well. Ask me anything if needed.
Not confirmed
That python3-flit 4.1.0 in the archive really ships the flit_core backend that python -m build --no-isolation imports; the package lists contain no python3-flit->core binary, so this is assumed, and a clean build would show it.
— Alexandre Detiste (detiste-guest), 2 hours ago