• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tschm / pytest-alembic
95%
main: 100%

Build:
Build:
LAST BUILD BRANCH: fix/lazy-asyncio-import
DEFAULT BRANCH: main
Repo Added 24 Aug 2026 04:40AM UTC
Token zu4ZGMQIZotraU3QaNkXCmbxXa8P9miKW regen
Build 75 Last
Files 17
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH chore/drop-python-3.9
branch: chore/drop-python-3.9
CHANGE BRANCH
x
Reset
Sync Branches
  • chore/drop-python-3.9
  • build/declare-dependency-floors
  • build/declare-tested-python-classifiers
  • build/interrogate-docstring-coverage
  • build/pin-python-toolchain
  • build/pre-commit-and-contributing
  • build/replace-m2r2-with-myst-parser
  • chore/bump-version-0.13.0
  • chore/drop-pytest-asyncio
  • chore/make-ci-pins-real
  • ci/cross-platform-tests
  • ci/dependency-vuln-scanning
  • ci/gate-dependency-floors
  • ci/gate-docs-build
  • ci/gate-publish-on-tests
  • ci/lock-coveralls-deps
  • ci/make-matrix-pins-real
  • ci/pin-actions-to-shas
  • ci/sqlalchemy-range-coverage
  • deps/urllib3
  • docs/core-api-doctests
  • docs/docstring-coverage-100
  • docs/fix-broken-fixture-examples
  • docs/fix-coverage-badge
  • docs/intersphinx-supported-sqlalchemy
  • docs/migration-context-size-note
  • docs/nitpicky-cross-references
  • docs/readme-badges
  • fix/collect-outside-rootpath
  • fix/collect-test-definitions-default
  • fix/deptry-private-pytest-import
  • fix/drop-dead-sqlalchemy-asyncio-guard
  • fix/lazy-asyncio-import
  • fix/previous-revision-base-tautology
  • fix/ship-license-in-artifacts
  • fix/subprocess-sys-executable
  • main
  • quality/docs-coverage-and-import-cycle
  • refactor/break-package-root-import-cycle
  • refactor/split-option-resolver-tests
  • test/assert-config-feature-effects
  • test/assert-has-test-real-check
  • test/coverage-100
  • test/drop-asyncio-marker
  • test/drop-unused-sqlalchemy-2-marker
  • test/gate-doctest-undefined-names
  • types/disallow-untyped-defs

25 Aug 2026 02:28PM UTC coverage: 94.609%. First build
32859868275

push

github

tschm
chore!: drop Python 3.9, raising the floor to 3.10

Python 3.9 reached end of life on 2025-10-31 (PEP 596) and receives no further
security patches. `requires-python = ">=3.9,<4"` was the only thing holding the
language floor three releases below the oldest supported Python, and it kept
ruff's `target-version` pinned at `py37` — which silently neutered the `UP`
(pyupgrade) rules the project has selected.

- `requires-python` is now `>=3.10,<4` and `target-version` is `py310`, so `UP`
  fires. The typing imports it rewrites give the whole package one dialect:
  PEP 585 builtin generics and PEP 604 unions, with forward references quoted.
- `runner.py` no longer needs `from __future__ import annotations` to write the
  modern form; its two `Config` forward references are quoted instead, matching
  `config.py` and `revision_data.py`.
- `revision_window` uses `itertools.pairwise` (3.10+) in place of the hand-rolled
  `tee`/`islice`/`zip` construction, which also resolves the B905 that
  `target-version = "py310"` newly reports.
- `types-dataclasses` is dropped from the dev group: it stubs the `dataclasses`
  *backport*, stdlib since 3.7, so it was already dead weight.
- The CI matrix loses `"3.9"` — 15 entries to 12 — and `contributing.rst` states
  the new floor.
- `classifiers` gains `Programming Language :: Python :: 3.10`–`3.13`, so the
  supported range is visible on PyPI rather than only in `requires-python`.

Raising `requires-python` is a breaking change for anyone still on 3.9, but a
safe one: pip and uv read the field and refuse the new release on 3.9, pinning
those users to the last compatible version rather than a broken install.

Closes #183

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

197 of 222 branches covered (88.74%)

Branch coverage included in aggregate %.

36 of 36 new or added lines in 9 files covered. (100.0%)

856 of 891 relevant lines covered (96.07%)

11.53 hits per line

Relevant lines Covered
Build:
Build:
891 RELEVANT LINES 856 COVERED LINES
11.53 HITS PER LINE
Source Files on chore/drop-python-3.9
  • Tree
  • List 17
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
32859868275 chore/drop-python-3.9 chore!: drop Python 3.9, raising the floor to 3.10 Python 3.9 reached end of life on 2025-10-31 (PEP 596) and receives no further security patches. `requires-python = ">=3.9,<4"` was the only thing holding the language floor three releases below ... push 25 Aug 2026 02:31PM UTC tschm github
94.61
See All Builds (73)

Badge your Repo: pytest-alembic

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc