Hi Jeroen,
Thanks for the thorough review! I believe I have addressed all your
suggested changes:
> repo: don't tag until upload / CI not active
Fixed. Removed premature tags, added .gitlab-ci.yml.
> changelog UNRELEASED / watch test releases / upstream/metadata docs link
All addressed. Changelog is UNRELEASED, watch has Uversion-Mangle for
pre-releases, metadata has Documentation link.
> orig tarball differs from uscan
Switched from PyPI to GitHub tarball. Now includes docs/, tests/, etc.
> vendored pint
Removed. Using system python3-pint via quilt patch.
> copyright years / Andreas Borgen / vendored pint
Years based on git history (2017-2024). Fixed cm-resize attribution to
Andreas Borgen. Vendored pint copyright now moot since removed.
> rules: use d/clean instead of dh_auto_clean override
Done.
> manpage: autogenerate with help2man
Done. Static file removed. Now generated at build time.
> control: sort deps / hardcoded deps / markupsafe / test deps / nocheck
All fixed. Deps sorted, using ${python3:Depends}, added markupsafe, pytest,
pytest-asyncio, bs4, trustme with <!nocheck>. Removed pytest-runner.
> lintian: application-in-library-section
Added override. Datasette is both an app AND a library - plugins import
from the datasette module -
https://docs.datasette.io/en/stable/writing_plugins.html - so standard
Python path seems correct.
> Does pip install/uninstall work in Debian?
No - blocked by PEP 668 (externally-managed-environment). Added
README.Debian documenting this and recommending pipx/venv for plugin
management.
Tested in clean chroot and Salsa CI also now passing. Ready for re-review.
Note: I made additional changes to get CI green (test configuration via
PYBUILD_TEST_ARGS/PYBUILD_BEFORE_TEST, pristine-tar, Build-Depends
adjustments). I'm still learning Debian packaging, so I'd appreciate any
feedback if these aren't the right approaches.
Thanks again for your continued help and support with this!
Best,
Mahangu
On Sat, Nov 29, 2025 at 4:19 PM Jeroen Ploemen <[email protected]> wrote:
> hi Mahangu,
>
> I took a look at the datasette package, up for sponsorship in the
> Python team:
>
> * repo: current Debian revision is already tagged on some old commit;
> please don't tag until an upload has been done, see team policy.
> * repo: CI not active, please enable.
>
> * changelog: please leave the release at UNRELEASED, per team policy.
>
> * watch: needs to handle upstream test releases, either by preventing
> them from getting matched in the first place, or by properly
> mangling the upstream version.
>
> * orig tarball generated from the pristine-tar branch differs from
> what uscan pulls in from github for the same upstream release:
> (output from tardiff -m -s)
> - .coveragerc
> - .dockerignore
> - .git-blame-ignore-revs
> - .gitattributes
> - .github
> [...]
> - .gitignore
> - .isort.cfg
> - .prettierrc
> - .readthedocs.yaml
> - CODE_OF_CONDUCT.md
> - Dockerfile
> + PKG-INFO
> - codecov.yml
> + datasette.egg-info
> [...]
> - datasette/vendored/pint/LICENSE
> - demos
> [...]
> - docs
> [...]
> - package-lock.json
> - package.json
> - pytest.ini
> / setup.cfg ( 6 + /
> 1 -)
> - test-in-pyodide-with-shot-scraper.sh
> - tests/__init__.py
> - tests/build_small_spatialite_db.py
> - tests/conftest.py
> - tests/ext.c
> - tests/fixtures.py
> - tests/plugins
> [...]
> - tests/spatialite.db
> - tests/test_datasette_https_server.sh
> - tests/test_templates
> [...]
> - tests/utils.py
>
> * sources have a vendored copy of 'pint', already packaged in debian
> as python3-pint. Please try using the packaged one, unless the
> vendored copy somehow special/modified.
>
> * copyright: what are the 2017-2024 upstream copyright years based on?
> * copyright: missing info for datasette/vendored/pint.
> * copyright: minified file datasette/static/cm-resize-1.0.1.min.js
> does come with explicit info on the copyright holder (2017-2018
> Andreas Borgen, rather than just a nickname).
>
> * rules: no need to override dh_auto_clean just to 'rm -rf' a bunch of
> files; simply list everything in d/clean instead.
>
> * manpage: debian/datasette.1 says it's generated by help2man. Do you
> actually need to keep a static copy in git, or could this file be
> autogenerated on build (ensuring it's always up-to-date for the
> packaged release)?
>
> * upstream/metadata: missing link to upstream documentation.
> (https://docs.datasette.io/)
>
> * control: sorting the deps would be helpful for readability.
> * control: why all the hardcoded deps on the binary pkg? You usually
> shouldn't be doing that unless the substitution variable
> ${python3:Depends} gets things wrong.
> * control: missing deps for unconditional imports of markupsafe:
> datasette/tracer.py:4:from markupsafe import escape
> datasette/app.py:23:from markupsafe import Markup, escape
> datasette/views/base.py:8:from markupsafe import escape
> datasette/views/database.py:5:from markupsafe import Markup, escape
> datasette/views/database.py:8:import markupsafe
> datasette/views/table.py:5:import markupsafe
> datasette/handle_exception.py:8:from markupsafe import Markup
> datasette/utils/__init__.py:9:import markupsafe
>
> ...which seems to be missing from install_requires in setup.py as
> well; possible upstream bug?
> * control: missing build-deps on pytest, pytest_asyncio, bs4,
> possibly others; needed for tests. The missing pytest causes pybuild
> to default to unittests, and therefore not run any tests on build
> at all.
> * control: setting the testsuite field to autopkgtest-pkg-pybuild is
> pointless when no tests are run on build.
> * control: please mark any build-deps that are only needed for
> testing with <!nocheck>.
> * control: possible unused build-dep on pytest-runner?
>
> * lintian: X: datasette: application-in-library-section python
> [usr/bin/datasette]
>
>
> Does the datasette module see use outside of the app itself (for
> example by scripts, plugins or addons), or is the whole thing an
> application that just happens to be written in Python and thus
> internally takes the shape of a module? In the latter case, it is
> customary to install the module in a private dir (typically
> /usr/share/<pkgname>/...).
>
> Was any testing done, preferably in a somewhat clean environment (VM
> or similar)? Does the whole install/uninstall code (using pip) in
> datasette/cli.py actually work in Debian?
>
>
> Once the above comments have been addressed, simply re-add the
> package to the IRC channel topic and/or ping me by e-mail.
>