Skip to content

fix: make _DependencyChainError._message abstract for ty 0.0.87 - #677

Merged
lesnik512 merged 1 commit into
mainfrom
fix/ty-0.0.87
Oct 14, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
fix/ty-0.0.87

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Fixes #676.

The scheduled dependency check picked up ty 0.0.87, which turns on invalid-mutable-override by default. It reports three errors on main.

  • _DependencyChainError declared _message as a writable Callable attribute, and both subclasses override it with a method. The base now declares it as an abstract method, which is what it always was. Coverage stays at 100%.
  • The __module__ = "..." assignment in test_compile_resolver_rejects_an_unknown_provider_type is flagged because the base class has __slots__. That's a ty regression: 0.0.86 accepts the same code, and a class without __slots__ in its bases passes on 0.0.87. It gets a per-line ignore. The existing comment moved to the line above so the line stays under 120 characters.

Locally with ty 0.0.87, just lint-ci is clean and just test-ci passes (1016 passed, 100% coverage).

@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: 3fe6c9d Previous: 0562ccb Ratio
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type 3357858.798211087 iter/sec (stddev: 1.1168485846607077e-8) 3665033.527713848 iter/sec (stddev: 3.2569022629891716e-8) 1.09
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry 3310330.618270282 iter/sec (stddev: 1.0448271808510978e-8) 3770267.07063078 iter/sec (stddev: 1.486217850095513e-8) 1.14
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve 21989.312002244285 iter/sec (stddev: 0.000045064164579378785) 22122.491274704902 iter/sec (stddev: 0.000046285293255025835) 1.01
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached 17528.34082561955 iter/sec (stddev: 0.00012272756653031826) 17141.423125218098 iter/sec (stddev: 0.00012621412593876789) 0.98
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] 452.79242464589294 iter/sec (stddev: 0.00007455318000854812) 405.53114584126445 iter/sec (stddev: 0.0000683064678782271) 0.90
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] 452.6459860087511 iter/sec (stddev: 0.00006347065420245676) 370.6104969741538 iter/sec (stddev: 0.0000722813039338876) 0.82
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] 442.02381559862334 iter/sec (stddev: 0.00005570549244987515) 386.32799278074316 iter/sec (stddev: 0.00009036164068038687) 0.87
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] 13021.288287203814 iter/sec (stddev: 0.0000073439971975834196) 13809.07753525987 iter/sec (stddev: 0.000007226556315135442) 1.06
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] 6562.294825764092 iter/sec (stddev: 0.000014788848432166258) 6379.784419617411 iter/sec (stddev: 0.000023441629222146088) 0.97
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] 3320.602328488134 iter/sec (stddev: 0.00004248146952018593) 3074.107745990331 iter/sec (stddev: 0.00012940936256357954) 0.93
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] 9450.92637981244 iter/sec (stddev: 0.000009735924875094773) 7752.923126611682 iter/sec (stddev: 0.000029032841718486824) 0.82
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] 4054.5589562303135 iter/sec (stddev: 0.000019151504485415926) 3779.4268536960594 iter/sec (stddev: 0.00002767991532369385) 0.93
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] 1870.670275190263 iter/sec (stddev: 0.000044130807470296084) 1728.5221436703077 iter/sec (stddev: 0.00004966410864454639) 0.92
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[1] 39797.33868531325 iter/sec (stddev: 0.000005008209676770247) 35508.547499431355 iter/sec (stddev: 0.000005089717544758893) 0.89
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[2] 15326.161796469225 iter/sec (stddev: 0.000011616911344868735) 12648.965282948015 iter/sec (stddev: 0.00001476460567443953) 0.83
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[4] 5590.746196902847 iter/sec (stddev: 0.000034909874716726894) 6085.090559615503 iter/sec (stddev: 0.000036673124683470755) 1.09
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container 1586770.585858911 iter/sec (stddev: 2.876698871252247e-8) 1572460.8639048617 iter/sec (stddev: 4.3238586831361774e-8) 0.99
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope 1691301.8165708429 iter/sec (stddev: 1.7569033183411853e-8) 1647764.405930359 iter/sec (stddev: 3.229029361516006e-8) 0.97
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch 3080.284343409128 iter/sec (stddev: 0.000013074652792384947) 2953.732831056772 iter/sec (stddev: 0.000012868614550593375) 0.96
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control 55472.303528412944 iter/sec (stddev: 0.000003842762886375086) 57077.15179104483 iter/sec (stddev: 0.0000022622446761981002) 1.03
benchmarks/test_guard_lifecycle.py::test_g7b_request_cycle_sync 367152.1458302274 iter/sec (stddev: 8.824478911899087e-8) 389157.9278170276 iter/sec (stddev: 7.538001071007417e-8) 1.06
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale 58360.6247919369 iter/sec (stddev: 0.0000016861269112308598) 58705.71321121978 iter/sec (stddev: 0.000002027004757550732) 1.01
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers 522.1604368508911 iter/sec (stddev: 0.001028486294179906) 530.1060244147608 iter/sec (stddev: 0.0008710323624485696) 1.02
benchmarks/test_guard_resolve.py::test_g1_transient_resolve 2186405.379567864 iter/sec (stddev: 2.5728731034662522e-8) 2092859.2218834385 iter/sec (stddev: 2.8607649076644558e-8) 0.96
benchmarks/test_guard_resolve.py::test_g2_cached_resolve 3648243.910500338 iter/sec (stddev: 1.05280974554512e-8) 3587410.3564403714 iter/sec (stddev: 2.4160135525755646e-8) 0.98
benchmarks/test_guard_resolve.py::test_g3_deep_chain 717576.3399881573 iter/sec (stddev: 6.045697053571199e-8) 653248.3788182421 iter/sec (stddev: 4.489908511937826e-8) 0.91
benchmarks/test_guard_resolve.py::test_g4_wide_resolve 458511.30640828225 iter/sec (stddev: 4.050493430796816e-7) 406743.0431135868 iter/sec (stddev: 3.7091997636303563e-7) 0.89
benchmarks/test_guard_resolve.py::test_g5_cross_scope 1958807.7422926885 iter/sec (stddev: 2.6918590015104546e-8) 1978364.8003841604 iter/sec (stddev: 2.0626363425857923e-8) 1.01
benchmarks/test_guard_resolve.py::test_g9_context_resolve 1299865.8603423696 iter/sec (stddev: 1.8383866252919707e-7) 1368063.6352061636 iter/sec (stddev: 1.3265064198257935e-7) 1.05
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve 742061.2249489238 iter/sec (stddev: 6.555000368845746e-8) 674866.702016756 iter/sec (stddev: 5.734129134936555e-8) 0.91
benchmarks/test_guard_resolve.py::test_g18_alias_hop 3621655.631906842 iter/sec (stddev: 9.794307523807086e-9) 3746772.155789681 iter/sec (stddev: 1.1500269781559673e-8) 1.03
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain 34406.178771709245 iter/sec (stddev: 0.000019378700661809042) 36397.55712222848 iter/sec (stddev: 0.00002006241299842051) 1.06
benchmarks/test_guard_validate.py::test_g11_validate_wide 20054.225020074613 iter/sec (stddev: 0.000026756737546112264) 21012.709789623445 iter/sec (stddev: 0.00002862112591767498) 1.05

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

@lesnik512
lesnik512 merged commit f2e0937 into main Oct 14, 2026
12 checks passed
@lesnik512
lesnik512 deleted the fix/ty-0.0.87 branch October 14, 2026 14:08
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.

Scheduled dependency check failed

1 participant