Skip to content

feat!: drop Python 3.10 support and remove python-dateutil dependency - #158

Open
hakandilek wants to merge 3 commits into
mainfrom
feat/drop-python-3.10
Open

feat!: drop Python 3.10 support and remove python-dateutil dependency#158
hakandilek wants to merge 3 commits into
mainfrom
feat/drop-python-3.10

Conversation

@hakandilek

@hakandilek hakandilek commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • build(deps): remove python-dateutil runtime dependency removes the unused runtime package, its type stubs, and the test-only parsing wrapper. Timestamp coverage now exercises the production parser with a non-UTC offset.
  • feat!: drop support for Python 3.10 raises the package, tox, CI, release, and documented minimum to Python 3.11.
  • chore: bump version to 5.0.0 applies the corresponding major version bump as an isolated commit.

Rationale

python-dateutil was only imported by a test helper. Production timestamp deserialization is handled by py-serializable through the standard library. Moving the dependency only to Poetry's development group would also leave tox environments broken because they install the built package plus tox-specific dependencies, not the Poetry development group.

Removing the helper avoids testing python-dateutil itself. The replacement fixture verifies a +04:30 timestamp through StandardBomParser. Dropping Python 3.10, which reaches end of life in October 2026, also removes the supported-version discrepancy for compact ISO 8601 offsets such as +01.

Breaking Change

Removing the unused runtime dependency is not itself a breaking change. Requiring Python 3.11 or newer is breaking, so this PR bumps the package to 5.0.0 in a separate commit.

Verification

  • poetry run tox run -r
  • lint and strict mypy checks pass
  • all 127 tests pass on Python 3.11, 3.12, 3.13, and 3.14
  • the dependency-removal commit also passed in a freshly recreated Python 3.10 tox environment before the floor was raised
  • poetry install reports version 5.0.0 through installed package metadata
  • poetry build produces the 5.0.0 wheel and source distribution

Closes #157

Thanks @suliuzh for identifying the unnecessary runtime dependency.

The production parser delegates timestamp deserialization to py-serializable and never imports python-dateutil. Remove the test-only wrapper rather than relocating it to a Poetry development group that tox environments do not install.

Keep timestamp coverage on the actual parser path with a non-UTC offset fixture.

Closes #157
Python 3.10 reaches end of life in October 2026. Raising the floor also makes timestamp parsing behavior consistent across every supported interpreter.

Keep the project version at 4.3.0 so the 5.0.0 release bump can land separately at release time.

BREAKING CHANGE: the minimum supported Python version is now 3.11.
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.

Move python-dateutil from the package's runtime dependencies to its Poetry development group.

1 participant