Skip to content

release: v0.4.0#83

Merged
kurok merged 1 commit into
masterfrom
release-v0.4.0
Jun 12, 2026
Merged

release: v0.4.0#83
kurok merged 1 commit into
masterfrom
release-v0.4.0

Conversation

@kurok

@kurok kurok commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Release prep for v0.4.0 — the first release of the modernized parser. (v0.3.0 was the PyO3 0.16.6 release; the 27 commits since then have been unreleased under a stale version number.)

  • Cargo.toml: version 0.3.00.4.0 (single source; maturin/pyproject read it dynamically — build confirmed it resolves to 0.4.0).
  • CHANGELOG.md: finalized the [0.4.0] section (the previous draft mislabeled this work as [0.3.0]).

⚠️ Breaking changes in 0.4.0

  • Drops Python 3.7–3.10 (min is now 3.11).
  • str input decoded as lossless UTF-8 (was truncating code points).
  • Undecodable bodies raise ParseError (were silently empty).

Release mechanics (after this merges)

Publishing is triggered by creating a GitHub Release (publish.yml → builds wheels → publishes to PyPI via OIDC Trusted Publishing). This requires the PyPI Trusted Publisher to be configured for namecheap/fast_mail_parser + publish.yml. workflow_dispatch can build the wheels without publishing as a dry-run.

Deferred to a future 0.5.0 (breaking, by decision): #22, #23, #25.

Bump version 0.3.0 -> 0.4.0 (single-sourced from Cargo.toml) and finalize the
CHANGELOG. v0.3.0 was the PyO3 0.16.6 release; this is the first release of the
modernized parser (PyO3 0.29, security fixes, 3.11–3.14 support).

Note: includes breaking changes — drops Python 3.7–3.10, str input is now
lossless UTF-8, and undecodable bodies raise ParseError.

Signed-off-by: yuriyryabikov <22548029+kurok@users.noreply.github.com>
@kurok kurok merged commit c3669c8 into master Jun 12, 2026
7 checks passed
@kurok kurok deleted the release-v0.4.0 branch June 12, 2026 21:15
kurok added a commit that referenced this pull request Jun 12, 2026
Fix every ruff finding on master — import ordering (I001), typing modernization
to builtin generics and X|Y unions (UP006/UP007), redundant open mode (UP015),
and a long line (E501) — across the package and tests. The public stub now
uses list/dict/str|bytes; mypy --strict still passes.

Flip the CI ruff step from advisory to blocking (config in ruff.toml) and add
`ruff check --fix` to CONTRIBUTING. Also sync Cargo.lock to 0.4.0 (left stale
by the version bump in #83).

Signed-off-by: yuriyryabikov <22548029+kurok@users.noreply.github.com>
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