Skip to content

Require py >=3.11, tiled >=0.2.21, and use httpx2 - #78

Merged
genematx merged 4 commits into
bluesky:mainfrom
genematx:httpx2-compat
Nov 2, 2026
Merged

genematx merged 4 commits into
bluesky:mainfrom
genematx:httpx2-compat

Conversation

@genematx

@genematx genematx commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

tiled 0.2.21 migrated its client from httpx to httpx2, changing the exception family raised through it: ClientError now subclasses httpx2.HTTPStatusError, so our except httpx.HTTPStatusError clauses silently stopped matching. Concretely, the remote-validation 404 fallbacks in BlueskyRun.validate and TiledWriter raised instead of falling back to local validation.

Pin tiled >=0.2.21 (runtime and test group) and switch both sites to httpx2, declared as a direct dependency since we import it. A small test guards the contract (ClientError is catchable via httpx2.HTTPStatusError) so the next migration fails loudly instead of silently.

tiled 0.2.21 migrated its client from httpx to httpx2, changing the
exception family raised through it: ClientError now subclasses
httpx2.HTTPStatusError, so our `except httpx.HTTPStatusError` clauses
silently stopped matching. Concretely, the remote-validation 404 fallbacks
in BlueskyRun.validate and TiledWriter raised instead of falling back to
local validation.

Pin tiled >=0.2.21 (runtime and test group) and switch both sites to
httpx2, declared as a direct dependency since we import it. A small test
guards the contract (ClientError is catchable via httpx2.HTTPStatusError)
so the next migration fails loudly instead of silently.
tiled 0.2.21 (the httpx2 generation) dropped Python 3.10, which made the
dependency resolution unsatisfiable for the 3.10 split of the supported
range and failed CI on every job, including 3.13 and the docs build.

- Bump `requires-python` to >=3.11 and drop the 3.10 classifier
- Update mypy `python_version` and pylint `py-version` to 3.11
- Test on 3.11 (new floor) and 3.13 in CI
- Update the Python version requirement in the installation tutorials
- Use `itertools.pairwise` in StreamDatum batching, resolving an old TODO
@genematx genematx changed the title Require tiled >=0.2.21 and use httpx2 to match the tiled client Require py >=3.11, tiled >=0.2.21, and use httpx2 Nov 2, 2026
@genematx
genematx requested a review from danielballan November 2, 2026 23:06
SQLAlchemy 2.1 deprecates the `noload` loader strategy, which tiled's
catalog ORM uses for the `Webhook.node` relationship. With warnings
raised as errors, the deprecation fails `configure_mappers()` and with
it every test that starts the in-process server. This is a third-party
issue, to be fixed in tiled.
@codecov

codecov Bot commented Nov 2, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 78.86%. Comparing base (366b68e) to head (1f98dd5).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #78      +/-   ##
==========================================
+ Coverage   78.78%   78.86%   +0.08%     
==========================================
  Files          16       16              
  Lines        2432     2432              
==========================================
+ Hits         1916     1918       +2     
+ Misses        516      514       -2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@genematx
genematx merged commit a754345 into bluesky:main Nov 2, 2026
15 checks passed
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