Skip to content

notifier-client: drop the SSH alias, adopt v0.3.1, declare python-dateutil if used #284

Description

@gregoryfoster

Filed from notifier (CannObserv/notifier#50). Suggestion only — notifier does not commit here.

notifier-client v0.3.1 is now tagged and installable. Watcher's pin is two releases behind and, until today, could not move: v0.3.0 and v0.3.1 were released in notifier's SDK CHANGELOG but never tagged, so rev = "v0.2.1" was the newest pin that existed. notifier#50 fixed that — the version is now locked to the server's, v0.3.1 is cut, and a CI gate fails any future release whose tag was never pushed.

Three changes here, independent of each other:

1. Drop the SSH host alias

[tool.uv.sources]
notifier-client = { git = "ssh://git@github-notifier/CannObserv/notifier.git", subdirectory = "clients/python", rev = "v0.2.1" }

github-notifier is an SSH host alias that exists only on the watcher VM. .github/workflows/ci.yml has to work around it in every job:

- name: Rewrite notifier SSH source to HTTPS
  run: git config --global url."https://github.com/".insteadOf "ssh://git@github-notifier/"

CannObserv/notifier is public. The alias buys nothing and costs a step in each job plus a trap for the next consumer who copies the pattern:

notifier-client = { git = "https://github.com/CannObserv/notifier.git", subdirectory = "clients/python", tag = "v0.3.1" }

That step can then be deleted from ci.yml.

2. Adopt v0.3.1

Two releases of changes; both changelogs state the public API is unaffected. channels.list(), dispatch(), retry, idempotency, and error semantics are identical to 0.2.1.

  • 0.3.0AuthErrorDetail added to the generated models; 401/403 now documented on every /api/v1 operation (notifier#22). Generated return types widen; the sub-clients watcher calls are untouched.
  • 0.3.1 — regenerated with openapi-python-client 0.29. Status enums derive from enum.StrEnum rather than (str, Enum); str(), f-strings and == "succeeded" all behave as before.

3. python-dateutil — the one thing that can actually break

0.3.1 removed python-dateutil from notifier-client's dependencies. openapi-python-client 0.29 parses dates with datetime.datetime.fromisoformat instead of dateutil.parser.isoparse, so nothing the SDK ships imports it.

Watcher's uv.lock currently receives python-dateutil transitively through notifier-client, and pyproject.toml does not declare it. If anything under src/ imports dateutil, adopting 0.3.1 removes it from the resolve. Worth checking before the bump rather than after:

rg -n '^\s*(import|from)\s+dateutil' src/ tests/

If it hits, declare python-dateutil directly in [project.dependencies] in the same change. (Watcher's own tests/test_dependency_extras.py already treats this class of transitive reliance as something to make explicit — same reasoning as packaging in #242.)

Context

notifier's release procedure is now documented at docs/RELEASING.md, including the consumer adoption path (change the tag, uv sync; to stay put, do nothing) and the trigger for graduating off the git-tag transport to a published package. No action needed here for that — flagging it so the pin's semantics are documented somewhere watcher can point at.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions