Skip to content

ci: test Python 3.15 and 3.15t as supported versions - #736

Merged
lesnik512 merged 1 commit into
mainfrom
ci/python-3.15
Oct 22, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
ci/python-3.15

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Summary

CPython 3.15.0 is out. CI has run 3.15 and 3.15t as allowed-to-fail pre-release jobs, and both pass on main. This makes them regular jobs that gate the build and declares 3.15 support.

Changes

  • _checks.yml: 3.15 and 3.15t move from the pre-release include list into the main matrix. The prerelease axis and continue-on-error stay, so the 3.16 alphas can go back into include later.
  • pyproject.toml: add the Programming Language :: Python :: 3.15 classifier. The free-threading classifier stays at 2 - Beta.
  • docs/dev/contributing.md and docs/introduction/design-decisions.md: list 3.15 and 3.15t among the tested versions.

Checklist

  • just test-ci, just test-docs pass locally on 3.15.0 and 3.15.0t (100% coverage)
  • just test-race --count=50 passes on 3.15.0t with the GIL disabled
  • just lint-ci passes

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Details
Benchmark suite Current: b781193 Previous: e328cdb Ratio
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type 5151314.453157649 iter/sec (stddev: 8.900244881069114e-9) 3349954.1307447646 iter/sec (stddev: 1.1395436163351595e-8) 0.65
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry 5162498.147311821 iter/sec (stddev: 5.696571961610013e-9) 3312132.593417775 iter/sec (stddev: 1.2445847186236911e-8) 0.64
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve 20751.122489255744 iter/sec (stddev: 0.00004280326044902461) 14310.01952624115 iter/sec (stddev: 0.00005169171312900758) 0.69
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached 17487.231788594574 iter/sec (stddev: 0.00011693817381699793) 11543.276706087852 iter/sec (stddev: 0.00013668329600242886) 0.66
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] 668.894213862163 iter/sec (stddev: 0.00001243249914836506) 480.20035415942203 iter/sec (stddev: 0.000041777889218064135) 0.72
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] 652.8797528471134 iter/sec (stddev: 0.000019999125165216275) 468.8497794119261 iter/sec (stddev: 0.00004972074226908734) 0.72
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] 623.9474447707487 iter/sec (stddev: 0.00003620033578074768) 444.40131585991736 iter/sec (stddev: 0.000057075542679951606) 0.71
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] 19815.12161284567 iter/sec (stddev: 0.000007630583628815147) 12884.756270161037 iter/sec (stddev: 0.000009400594180562489) 0.65
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] 10100.419209492564 iter/sec (stddev: 0.000014752575265063431) 6451.831779894308 iter/sec (stddev: 0.00002574506947328166) 0.64
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] 4874.56148749045 iter/sec (stddev: 0.00002958598862238848) 3327.5353802251952 iter/sec (stddev: 0.00004075751251091918) 0.68
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] 14476.071174981711 iter/sec (stddev: 0.000009116679264375989) 10206.606379146002 iter/sec (stddev: 0.000010784268302512774) 0.71
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] 6833.935203698099 iter/sec (stddev: 0.000014655866259778539) 4255.767211819689 iter/sec (stddev: 0.000020716268249827244) 0.62
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] 3005.422608879252 iter/sec (stddev: 0.00003113063527690822) 2038.7660490820576 iter/sec (stddev: 0.00004938984564405704) 0.68
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[1] 50307.50462404221 iter/sec (stddev: 0.0000043844410970127735) 40641.44391037792 iter/sec (stddev: 0.000005944780803254656) 0.81
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[2] 20630.069839583233 iter/sec (stddev: 0.000011006590606262544) 14342.72148138468 iter/sec (stddev: 0.00001729375527282881) 0.70
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[4] 8433.566268432147 iter/sec (stddev: 0.000022231288577274636) 5755.052036468175 iter/sec (stddev: 0.00003704727741172385) 0.68
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container 2124006.0580937658 iter/sec (stddev: 2.4947729593749025e-8) 1597285.764238152 iter/sec (stddev: 3.333430619631821e-8) 0.75
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope 2234381.477954952 iter/sec (stddev: 2.595228094221246e-8) 1708808.8841611473 iter/sec (stddev: 1.8735266620124955e-8) 0.76
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch 4526.7800458187385 iter/sec (stddev: 0.000013864144958497152) 3233.528018998844 iter/sec (stddev: 0.000014269058589414899) 0.71
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control 76064.23213181192 iter/sec (stddev: 0.0000010263641632906485) 54316.547075001225 iter/sec (stddev: 0.0000023132611561410522) 0.71
benchmarks/test_guard_lifecycle.py::test_g7b_request_cycle_sync 603216.8408015313 iter/sec (stddev: 6.502109306538012e-8) 426029.0363923076 iter/sec (stddev: 7.578846940622007e-8) 0.71
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale 93320.14520143608 iter/sec (stddev: 0.0000010165280348384097) 64015.460546578244 iter/sec (stddev: 0.0000016733397093477113) 0.69
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers 844.7732082008033 iter/sec (stddev: 0.0008578582720297479) 566.909801984178 iter/sec (stddev: 0.0009460974422276269) 0.67
benchmarks/test_guard_resolve.py::test_g1_transient_resolve 3076411.682635203 iter/sec (stddev: 2.1945740406193313e-8) 2185030.215969131 iter/sec (stddev: 2.7315720395351753e-8) 0.71
benchmarks/test_guard_resolve.py::test_g2_cached_resolve 5013606.677845336 iter/sec (stddev: 6.7342680276684896e-9) 3664668.2009361708 iter/sec (stddev: 8.914597878180114e-9) 0.73
benchmarks/test_guard_resolve.py::test_g3_deep_chain 1148462.8886563114 iter/sec (stddev: 4.318122419994584e-8) 793625.6936645809 iter/sec (stddev: 4.2639753743298074e-8) 0.69
benchmarks/test_guard_resolve.py::test_g4_wide_resolve 607065.9993354299 iter/sec (stddev: 3.9693121205771465e-7) 481821.2225483881 iter/sec (stddev: 3.892766536946014e-7) 0.79
benchmarks/test_guard_resolve.py::test_g5_cross_scope 2686256.821320808 iter/sec (stddev: 2.4350942845154723e-8) 2007958.7452739624 iter/sec (stddev: 2.192103347602309e-8) 0.75
benchmarks/test_guard_resolve.py::test_g9_context_resolve 2069175.645591579 iter/sec (stddev: 1.20505953812858e-7) 1385459.5397876373 iter/sec (stddev: 1.33964339193956e-7) 0.67
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve 1162579.6083599052 iter/sec (stddev: 3.918729924154014e-8) 839682.9810449105 iter/sec (stddev: 3.2438992076566274e-8) 0.72
benchmarks/test_guard_resolve.py::test_g18_alias_hop 5033289.674571305 iter/sec (stddev: 4.948257655623387e-9) 3583069.323816902 iter/sec (stddev: 1.0973201233023321e-8) 0.71
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain 57936.85022346923 iter/sec (stddev: 0.0000017400754896027158) 35458.48859963979 iter/sec (stddev: 0.0000030607291575767464) 0.61
benchmarks/test_guard_validate.py::test_g11_validate_wide 33608.54549696319 iter/sec (stddev: 0.000002249249635316272) 21545.0858679431 iter/sec (stddev: 0.000004115949781371136) 0.64

This comment was automatically generated by workflow using github-action-benchmark.

@lesnik512
lesnik512 merged commit bc1dc9f into main Oct 22, 2026
12 checks passed
@lesnik512
lesnik512 deleted the ci/python-3.15 branch October 22, 2026 04:50
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