DFSG NEW Queue

DFSG, Licensing & New Packages Team

python-dronecan 1.0.27+ds1-1

Package Information

DescriptionPython implementation of the DroneCAN protocol

DroneCAN is a CAN bus protocol used by ArduPilot, PX4 and peripheral devices. This library provides the Python protocol stack, a DSDL message definition parser, message serialization and CAN interface drivers.

Standard and vendor-specific DSDL definitions are included. The dronecan-bridge command forwards frames between CAN interfaces. Native Linux SocketCAN and recorded CAN files can be used without additional Python libraries; serial adapters, python-can backends and MAVLink CAN tunnels use optional dependencies.

MaintainerDebian Python Team <team+python@tracker.debian.org>
Changed BySteffen Moeller <moeller@debian.org>
Sponsormoeller@debian.org
Distributionunstable
Architectureall
VCSgit: https://salsa.debian.org/python-team/packages/python-dronecan.git (browse)
Closes#1153037
Trackerhttps://tracker.debian.org/pkg/python-dronecan
Uploaded1 hour ago

New Package Report

.changes◂
Version1.0.27+ds1-1
Changed-BySteffen Moeller <moeller@debian.org>
Architecturesource all
Distributionunstable
DateWed, 04 Nov 2026 20:27:55 +0100
Sourcepython-dronecan
Changelog◂
python-dronecan (1.0.27+ds1-1) unstable; urgency=medium
 .
   * Initial release. (Closes: #1153037)
.dsc◂
Package-Listpython3-dronecan deb python optional arch=all
Sectionpython
Priorityoptional
Componentmain
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: DroneCAN
Upstream-Contact: https://github.com/DroneCAN/pydronecan/issues
Source: https://pypi.org/project/dronecan/
Files-Excluded: dronecan.egg-info/*

Files: *
Copyright:
 2014-2015 Pavel Kirienko
 2014-2016, 2019 UAVCAN Development Team <uavcan.org>
 2014-2018, 2023 DroneCAN Development Team <dronecan.org>
 2022 DroneCAN Development Team <uavcan.org>
License: Expat

Files: dronecan/dsdl_specs/*
Copyright: 2014-2015 Pavel Kirienko
License: Expat
Comment: These protocol definitions are supplied by the PyPI source release.
 The corresponding DroneCAN DSDL project uses the same Expat licence:
 https://github.com/DroneCAN/DSDL/blob/master/LICENSE

Files: debian/*
Copyright: 2026 Steffen Moeller <moeller@debian.org>
License: Expat

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, 0 important, 0 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-dronecan version 1.0.27+ds1-1

Summary

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

Licensing

debian/copyright is DEP-5 with the exact 1.0 Format URL. Every licence notice in the tree is the Expat/MIT text, and the only holders named anywhere (Pavel Kirienko, UAVCAN Development Team, DroneCAN Development Team) are all in the Files: * stanza, whose holders and years match the per-file headers. The DSDL definitions under dronecan/dsdl_specs/ carry no notices of their own; they are covered by a more specific stanza that gives them the same Expat licence and the DSDL project's holder, and their Comment records where they come from. No non-free clause, no unlicensed file, and expat is not in /usr/share/common-licenses so its full text is correctly reproduced. The scan's author check found no holder missing from debian/copyright.

Packaging

The packaging is small, current and correct: debhelper compat 13 with dh-sequence-python3 and the pyproject pybuild backend, Standards-Version 4.7.4 against the installed Policy 4.7.4.1, Rules-Requires-Root: no, a single Architecture: all package with the right substvars, optional drivers behind Recommends/Suggests for lazily imported python3-serial/python3-can/python3-pymavlink, a DEP-3 patch, a man page whose program name matches the installed /usr/bin/dronecan-bridge, and an autopkgtest that checks the installed data files, the DSDL parser and the CLI. The two rules-workarounds (renaming the setuptools script, chmod of the .uavcan data) run at the right points in dh's sequence, and the +ds1 repack is documented in both debian/copyright and debian/README.source.

Issues

None.

Verified ◂
  • debian/copyright read in full: DEP-5, Files: * (Expat), a dronecan/dsdl_specs/* stanza and a debian/* stanza; the Expat text is given in full since it is not in /usr/share/common-licenses.
  • Files: * holders (2014-2015 Pavel Kirienko; 2014-2016, 2019 UAVCAN Development Team; 2014-2018, 2023 DroneCAN Development Team; 2022 DroneCAN Development Team <uavcan.org>) cover every per-file header found in the tree, including dronecan/version.py (2014-2018 DroneCAN Development Team) and dronecan/driver/mavcan.py (2022 DroneCAN Development Team <uavcan.org>).
  • Every Python file in dronecan/, dronecan/app, dronecan/driver, dronecan/dsdl, test/ and setup.py begins with the header This software is distributed under the terms of the MIT License; tools/dronecan_bridge.py has no header and is covered by Files: * and the root LICENSE (Expat, Pavel Kirienko 2014-2015).
  • dronecan/dsdl_specs/: ~170 .uavcan files in the uavcan, dronecan, ardupilot, com, cuav and mppt namespaces, verified to come from the orig tarball (e.g. python-dronecan_1.0.27+ds1.orig.tar.xz:dronecan-1.0.27/dronecan/dsdl_specs/uavcan/Timestamp.uavcan), not added by the packager. They carry no per-file notices, so the dsdl_specs stanza (Pavel Kirienko, Expat) is not contradicted by anything in the tree.
  • Grep across the whole tree for copyright, (C), ©, SPDX-License-Identifier, GNU, Apache, MPL, public domain, all rights reserved, non-commercial, no-modification, patent and field-of-use wording found only the Expat notices and the copyright file's own text; no second licence anywhere.
  • The prescan's author check (every holder found is named in debian/copyright, 184 files scanned) was confirmed against my own read of all 31 copyright headers; the scan listed no individual file for me to account for.
  • No built, minified, archived, PDF or bytecode files are present: the only non-source files in the tree are the upstream sdist's PKG-INFO, setup.cfg, pyproject.toml, MANIFEST.in and README.md, all text from the orig tarball. No vendored third-party library.
  • The orig tarball contains no dronecan.egg-info directory (member lookup failed), so Files-Excluded: dronecan.egg-info/* and README.source's account of the +ds1 repack agree with what was shipped.
  • Patch self-contained-source-metadata.patch: DEP-3 headers present, context matches the orig tarball (MANIFEST.in is 36 bytes = recursive-include ../DSDL/ *.uavcan, pyproject readme is README.txt), and both edits are necessary for the unpatched sdist to build (README.txt does not exist; README.md does).
  • debian/rules: execute_after_ hooks are supported by dh (Dh_Lib/SequencerUtil.pm runs them after the command); dh_python3 is inserted before dh_installinit by the python3 sequence, so the rename in execute_after_dh_auto_install precedes shebang rewriting, and the chmod in execute_after_dh_fixperms lands after dh_fixperms and before dh_md5sums.
  • Runtime imports read module by module: only stdlib at module import, with pymavlink, python-can and pyserial imported inside try/except (driver/init.py, python_can.py, slcan.py, mavcan.py), so Recommends: python3-serial and Suggests: python3-can, python3-pymavlink are correct and not missing dependencies.
  • debian/tests: installed changes to $AUTOPKGTEST_TMP before running the suite and check-installed.py, so import dronecan resolves to the installed package rather than the source tree; check-installed.py's assertions on the six namespaces and on TYPENAMES match files present. allow-stderr is needed because unittest writes to stderr.
  • Packaging files read: control, rules, changelog (1.0.27+ds1-1, unstable, closes #1153037), source/format (3.0 quilt), source/options, patches/series and the patch, tests/control and both test files, gbp.conf, README.source, python3-dronecan.docs/.manpages, upstream/metadata, salsa-ci.yml, dronecan-bridge.1 (installs as man1/dronecan-bridge.1, matching the renamed /usr/bin/dronecan-bridge).
  • Standards-Version 4.7.4 is current: the installed Policy is 4.7.4.1 (/usr/share/doc/debian-policy/policy.html/index.html).
  • uscan found the packaged version as the newest upstream release (upstream 1.0.27, packaged 1.0.27+ds1).
Not confirmed ◂
  • The salsa repository's branch layout (gbp.conf debian-branch = main, Vcs-Git/Vcs-Browser) and the ITP bug number in the changelog cannot be checked without network access.
  • The upstream DroneCAN DSDL repository's LICENSE, cited in the dsdl_specs Comment, was not fetched; the conclusion on those files rests on their having no notices in the tree and on the parent project's LICENSE.
  • The exact file modes of the .uavcan data in the tarball (which would explain the chmod in debian/rules) could not be inspected, as file permissions are not exposed by the read tools.
Proposed changes ◂

None.

Uploader's response to the LLM review

The uploader was emailed about the review 0 hours ago.

Back to Dashboard | View all reviews for this package