DFSG NEW Queue

DFSG, Licensing & New Packages Team

python-raydriver 0.2.0-1

Package Information

DescriptionRust-native machine drivers for Rayforge

raydriver provides machine-control drivers implemented in Rust and exposed to Python through PyO3. It currently includes a GRBL serial driver with flow control, status polling, command queuing, job streaming, recovery, cancellation, settings, work-coordinate access, and probing support.

This package provides the Python 3 module and the raydriver command-line program.

MaintainerDebian Python Team <team+python@tracker.debian.org>
Changed ByMichele Cane <michele.cane@proton.me>
Sponsorjcfp@debian.org
Distributionunstable
Architectureany
VCSgit: https://salsa.debian.org/python-team/packages/python-raydriver.git (browse)
Closes#1150266
Trackerhttps://tracker.debian.org/pkg/python-raydriver
Uploaded2 days ago

New Package Report

.changes◂
Distributionunstable
DateThu, 05 Nov 2026 07:55:16 +0000
Sourcepython-raydriver
Version0.2.0-1
Changed-ByMichele Cane <michele.cane@proton.me>
Architecturesource amd64
Changelog◂
python-raydriver (0.2.0-1) unstable; urgency=medium
 .
   * Initial Debian packaging. (Closes: #1150266)
.dsc◂
Sectionpython
Priorityoptional
Componentmain
Package-Listpython3-raydriver deb python optional arch=any
debian/copyright◂
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: raydriver
Upstream-Contact: https://github.com/barebaric/raydriver/issues
Source: https://github.com/barebaric/raydriver

Files: *
Copyright: 2026 Barebaric
License: MIT

Files: src/grbl/*
Copyright: 2023-2026 Samuel Abels <knipknap@gmail.com>
           2023-2026 Rayforge contributors
           2026 Barebaric
License: MIT
Comment: These files contain a Rust port of Rayforge's GRBL driver.
 Rayforge is distributed under the MIT license.

Files: debian/*
Copyright: 2026 Michele Cane <michele.cane@proton.me>
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 0 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 2 days ago.

Report◂

DFSG NEW review for python-raydriver version 0.2.0-1

Summary

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

Licensing

debian/copyright is DEP-5 with the correct Format line and three stanzas (Files: *, Files: src/grbl/*, Files: debian/*) that between them cover every file in the tree; all use MIT and the full MIT text (not in /usr/share/common-licenses) is reproduced in the stand-alone License paragraph, matching LICENSE. No non-free wording, no other licence files anywhere in the source, and the files that look generated (PKG-INFO, the .pyi stubs, Cargo.lock) all ship with the source or generator that produces them. The only outside origin is Rayforge's GRBL driver, which the src/grbl/* stanza covers with its holders; the file asserts Rayforge is MIT, which I could not verify from the package itself.

Packaging

Modern and careful: debhelper compat 14 with dh sequences, complete Build-Depends (every librust-* virtual package checked present, including env_filter 2.0.0, pyo3 0.28.2/0.29.3 and pyo3-stub-gen 0.23.0), pybuild+maturin driven through dh-cargo's cargo wrapper with the lockfile regenerated against the Debian registry, a DEP-3 patch that matches the archive's crate versions, three autopkgtests with complete Depends, Standards-Version 4.7.4 (the current Policy version) and salsa CI with a nocheck profile. The only defect found is an incomplete manual page.

Issues

minor packaging 1. raydriver(1) documents only 4 of the CLI's options and omits --seconds, which its own EXAMPLES uses ◂
  • Files: debian/manpages/raydriver.1:20-33, debian/manpages/raydriver.1:43, python/raydriver/cli/main.py:248-300
  • Basis: checked, in the package or with a reference tool
  • Evidence: OPTIONS has only -h, --help, --port DEVICE, --baudrate RATE, --emulator; EXAMPLES contains raydriver status --port /dev/ttyUSB0 --seconds 5.
  • Problem: Both subcommands also accept --speed-factor and --log-file, run accepts --timeout and --no-poll, and status accepts --seconds; none of these is documented, and the EXAMPLES section uses an option OPTIONS does not describe, so the page is inconsistent with the program it documents.
  • Fix: Add the missing options to the OPTIONS section (with their defaults), or remove --seconds from the examples.
Verified ◂
  • Prescan (dfsg-author-check): it reported that every copyright holder it found is named in debian/copyright, and listed no other files. That is consistent with the tree: the only copyright notices are LICENSE:3 (Copyright (c) 2026 Barebaric) and debian/copyright itself; grep over the whole tree (gitignore disabled, .pc/ ignored) for Copyright, (C), ©, SPDX-License-Identifier, Licensed under, Permission is hereby granted, GNU General/Lesser, Apache, Mozilla Public, public domain, All rights reserved, MIT, Expat, BSD finds nothing else.
  • Stanza matching: Files: * (MIT, 2026 Barebaric) covers all top-level files, .github/workflows/*, python/**, src/**, tests/**; Files: src/grbl/* overrides for the Rayforge port, naming Samuel Abels, Rayforge contributors and Barebaric; Files: debian/* (last, so it wins) covers every packaging file including debian/manpages/raydriver.1. The MIT text in debian/copyright is identical to LICENSE, and both name the same holder.
  • No LICENSE/COPYING/NOTICE/AUTHORS exists anywhere but the top-level LICENSE: the orig tarball's root listing and every subdirectory (python/, src/, tests/) contain none, so no vendored code carries a separate licence.
  • src/grbl/errors.rs is an error/alarm-code table whose module doc cites the Grbl v1.1 wiki; its messages are this project's own wordings (e.g. A hard limit switch was triggered. The machine has stopped and needs to be reset.) rather than Grbl's firmware strings, so no GPL-3 text from the Grbl firmware is reproduced. (inference)
  • src/python/mod.rs's utc_timestamp reimplements Howard Hinnant's civil-from-days algorithm, which the comment names; an algorithm is not a copyrightable expression and no third-party licence text is required for it. (inference)
  • Generated files: PKG-INFO is generated from pyproject.toml and README.md (both present); the .pyi stubs are generated by pyo3-stub-gen and make stubs (src/bin/stub_gen.rs, present); Cargo.lock is generated by cargo and regenerated by debian/rules. No compiled binary, minified code, PDF or other built artefact is shipped.
  • Upstream leftovers, all covered by Files: * and none licence-relevant: Cargo.toml.bak is an unused copy of the pre-release Cargo.toml (version 0.0.0, unpatched deps, referenced nowhere but debian/rules' dh_clean -X); freeze-dump.txt is a 0-byte file created by tests/conftest.py's faulthandler dump and deleted from the installed tree; .github/, env.sh, AGENTS.md, Makefile, .pre-commit-config.yaml and rustfmt.toml are upstream's own development files.
  • Reference checks: debhelper 14.5 provides dh-sequence-single-binary (which sets dh_auto_install's destdir to debian/python3-raydriver/, matching rules' execute_after_dh_python3), pybuild-plugin-pyproject is in dh-python 7.20261030, python3-maturin 1.16.0 satisfies pyproject's maturin>=1.5,<2.0, and every librust-* Build-Depend exists as a real or versioned-provided package.
  • Coverage: read every file of debian/ in full; every top-level file; the whole Python package and CLI; the module documentation of every src/ file; greps of the tree for licence and provenance wording.
  • debian/watch was not reviewed, as instructed.
  • uscan found upstream releases with debian/watch; a newer upstream version is available (upstream 1.0.0, packaged 0.2.0), which is not a fault of the package.
Not confirmed ◂
  • Rayforge's licence: debian/copyright names Samuel Abels and Rayforge contributors on src/grbl/*, which the module docs call a faithful port of Rayforge's grbl_serial.py/GrblSerialDriver, and asserts in a Comment that Rayforge is MIT. Rayforge is in Debian main (rayforge 1.11.1-1) but is not installed on the reviewing system and no Rayforge licence text is shipped here, so that assertion could not be checked; if Rayforge's driver were GPL-3 rather than MIT, the relicensing of the port would be a blocker. Compare with rayforge's own debian/copyright before accepting.
  • No build or install was run: that cargo generate-lockfile --offline resolves env_filter/pyo3 against the linked Debian registry, that maturin installs the pure-Python package, stubs, py.typed and the raydriver console script, and that the three autopkgtests pass were reasoned from debian/rules and the package contents, not observed.
  • I did not read every line of the larger sources (src/grbl/session.rs, src/grbl/flow.rs, src/grbl/parser.rs, python/raydriver/emulator.py, tests/*); the licence search and the provenance review covered them by grep and by their module documentation.
Proposed changes ◂

None.

Uploader's response to the LLM review

I agree that the manual page is incomplete. In addition to --seconds, it should document the common --speed-factor and --log-file options, the run command’s positional file argument, --timeout and --no-poll, and the status command’s --seconds option.

This is a minor documentation issue and does not affect the program’s operation, licensing or package installation. I intend to correct the manual page in the next Debian revision rather than reject the NEW upload again.

For the items listed as not confirmed:

  • Rayforge is MIT-licensed, as recorded in the rayforge source package’s debian/copyright; the GRBL port’s provenance and copyright holders are documented in this package.
  • The corrected package was built successfully in an unstable amd64 chroot. All 133 upstream tests passed under both Python 3.14 and Python 3.15 during the build. Installed-package autopkgtests also passed the import test, all 133 tests under both interpreters, and the CLI/emulator smoke test. Deep lintian produced no findings.

— Michele Cane (heiserhorn), 2 days ago

Other Reviews of this Package

VersionHashAllocatedCompletedReviewerStatusDetails
0.2.0-1 c705a680… 2026-11-05 17:13 2026-11-05 17:13 dfsg-uploader rejected VIEW

Back to Dashboard | View all reviews for this package