Skip to content
This repository was archived by the owner on Jun 7, 2026. It is now read-only.

fix #53: support Python 3.13+, replace eyre with anyhow - #108

Open
teng-lin wants to merge 3 commits into
thewh1teagle:mainfrom
teng-lin:fix-53-py313-anyhow
Open

fix #53: support Python 3.13+, replace eyre with anyhow#108
teng-lin wants to merge 3 commits into
thewh1teagle:mainfrom
teng-lin:fix-53-py313-anyhow

Conversation

@teng-lin

Copy link
Copy Markdown

Bump pyo3 0.20.3 -> 0.23 with abi3-py37 so rookiepy builds a single forward-compatible wheel that works on Python 3.7 through 3.14+.

eyre 0.6's pyo3 feature is pinned to pyo3 ^0.20 with no newer release available, which blocked the bump. Swap eyre for anyhow throughout rookie-rs and enable pyo3's anyhow feature so anyhow::Error converts to PyErr automatically -- the bindings drop their manual map_err helper and use ? directly.

Verified: cp37-abi3 wheel imports and runs on Python 3.13.13 and 3.14.5.

teng-lin and others added 3 commits May 14, 2026 19:27
Bump pyo3 0.20.3 -> 0.23 with abi3-py37 so rookiepy builds a single
forward-compatible wheel that works on Python 3.7 through 3.14+.

eyre 0.6's pyo3 feature is pinned to pyo3 ^0.20 with no newer release
available, which blocked the bump. Swap eyre for anyhow throughout
rookie-rs and enable pyo3's anyhow feature so anyhow::Error converts to
PyErr automatically -- the bindings drop their manual map_err helper
and use `?` directly.

Verified: cp37-abi3 wheel imports and runs on Python 3.13.13 and 3.14.5.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
After the eyre→anyhow swap, rustfmt's import-ordering rules want
anyhow before alphabetically-later crates (base64, byteorder) and
the `use anyhow::bail; pub use anyhow::{self, Result};` block to
sit ahead of the other internal `use common::*` lines. Pure
formatting; no behavior change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
pyo3 0.23 deprecates the implicit-default behavior for trailing
Option<T> arguments (treats them as keyword-only with default None
unless an explicit signature is given). The deprecation surfaces as
clippy warnings, which the lint workflow escalates to errors via
-D warnings.

Annotate every pyfunction in bindings/python/src/browsers.rs with
#[pyo3(signature = ...)] reflecting the existing call shape, so the
binding API stays identical from Python's side while clippy goes
green. No behavior change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant