Skip to content

Take the relay library from PyPI and prepare the package for release - #1

Merged
Boernsman merged 1 commit into
mainfrom
prepare-pypi-release
Aug 30, 2026
Merged

Take the relay library from PyPI and prepare the package for release#1
Boernsman merged 1 commit into
mainfrom
prepare-pypi-release

Conversation

@Boernsman

Copy link
Copy Markdown

Everything needed before denkovi-cli can be uploaded to PyPI, plus removal of the submodule that was the apparent blocker.

The submodule was not needed

dae_RelayBoard was vendored as a git submodule on the assumption that this setup.py-only project had never been published. It has been on PyPI since 2024-08-02, and that release is the same code — every module in the published wheel parses to an identical AST, differing only in comment formatting (#Copyright vs # Copyright). The README already noted the equivalence.

So the submodule and the [tool.uv.sources] path entry that pointed at it are gone. uv.lock now resolves dae-relayboard==1.5.2 from pypi.org/simple with a hash, and the three submodules: recursive checkouts in CI are dropped. Cloning no longer needs --recurse-submodules.

This also fixes a leak: [tool.uv.sources] was surviving into the sdist's pyproject.toml as path = "dae-py-relay-controller", a directory the sdist does not ship. uv ignores sources from dependency sdists so nothing broke in practice, but it was a dangling reference in published metadata. The rebuilt sdist is clean.

Metadata

Author email bitcushtesting.combitcrushtesting.com (missing r)
[project.urls] added Homepage / Repository / Issues
Classifiers added Development Status :: 4 - Beta and Python 3.12 / 3.13 / 3.14
Keywords added
dae-RelayBoard unbounded → >=1.5.2

README

The CI badge used ../../actions/..., which only resolves inside GitHub — PyPI renders the README with no repo context, so that would have been a broken image at the top of the project page. Now absolute, with a PyPI version badge alongside.

The install section led with git clone --recurse-submodules; it now leads with uv tool install denkovi-cli, with the source checkout as the secondary path. Credits and the licence note describe the library as a PyPI dependency rather than a vendored submodule.

Verification

  • ruff check / ruff format --check clean
  • pytest — 58 passed
  • uv sync --locked succeeds against the regenerated lock
  • twine check PASSED on both wheel and sdist
  • built wheel and sdist each installed into a fresh virtualenv resolving every dependency from PyPI; denkovi --version, list and status all behave correctly with no board attached

Not included

The release workflow itself. Publishing needs a PyPI account with 2FA and, ideally, a Trusted Publisher (OIDC) bound to this repo — worth a follow-up PR once that is registered on PyPI. denkovi-cli is currently unclaimed.

The dae_RelayBoard library was carried as a git submodule because it looked
like a setup.py-only project that had never been published. It has been on
PyPI since August 2024, and that release is the same code: every module in
the published wheel parses to an identical AST, differing only in comment
formatting. The submodule bought nothing and cost a --recurse-submodules
step for anyone cloning, so it is gone, along with the [tool.uv.sources]
entry that pointed the dependency at it. The dependency now carries a >=1.5.2
floor rather than being unbounded.

That path source had also been leaking into the sdist's pyproject.toml as a
reference to a directory the sdist does not ship.

The rest is metadata the package needs before it can be uploaded:

- Fix the author email, which was missing the r in bitcrushtesting.
- Add [project.urls] so the PyPI sidebar links back to the repository.
- Add Development Status and Python version classifiers, and keywords.
- Make the CI badge URL absolute. PyPI renders the README without any repo
  context, so the relative ../../actions/ form showed a broken image.
- Rewrite the install section around `uv tool install denkovi-cli`, with the
  source checkout as the secondary path.

Verified with ruff, pytest on all 58 tests, `uv sync --locked`, `twine check`
on both artifacts, and installing the built wheel and sdist into clean
virtualenvs that resolve every dependency from PyPI.
@Boernsman
Boernsman merged commit 3274a9a into main Aug 30, 2026
11 checks passed
@Boernsman
Boernsman deleted the prepare-pypi-release branch August 30, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant