Skip to content

refactor: extract generated resolver error enrichment - #739

Merged
lesnik512 merged 1 commit into
mainfrom
refactor/resolver-error-enrichment
Nov 3, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
refactor/resolver-error-enrichment

Conversation

@lesnik512

Copy link
Copy Markdown
Member

Summary

  • Consolidate generated dependency-error handling into one handler and move error enrichment into Python.
  • Preserve traceback line attribution, missing-context parameter naming, and alias hop order.

Verification

  • 1,127 tests passed. Ruff and ty passed.
  • Three alternating baseline and candidate benchmark runs on Python 3.14.7 showed warm chain and fan-out medians within 1%. Cold first resolution measured 3.9% faster for transient factories and 2.9% faster for cached factories, with run-to-run variation.

@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: 125aebd Previous: 601dc39 Ratio
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type 3987359.7506044516 iter/sec (stddev: 1.6046493949129354e-8) 3195822.8294665394 iter/sec (stddev: 2.7394314912652647e-8) 0.80
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry 4007637.4348105434 iter/sec (stddev: 7.008145313772388e-9) 3136520.5379575305 iter/sec (stddev: 4.788010436514527e-8) 0.78
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve 17138.81987706003 iter/sec (stddev: 0.00005228297919579172) 14221.487300887924 iter/sec (stddev: 0.000055437290338994584) 0.83
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached 13979.133311965043 iter/sec (stddev: 0.0001596626861821142) 11316.093094626509 iter/sec (stddev: 0.0001591476702734994) 0.81
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] 524.3632696525808 iter/sec (stddev: 0.000022198884149837372) 401.643404530851 iter/sec (stddev: 0.00014572539321911952) 0.77
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] 508.2027959581437 iter/sec (stddev: 0.000020859824609554957) 409.8701042300772 iter/sec (stddev: 0.00014535466016301986) 0.81
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] 485.6789052682181 iter/sec (stddev: 0.000040651963171774184) 373.7238923804447 iter/sec (stddev: 0.00020295028743771084) 0.77
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] 15558.846539706487 iter/sec (stddev: 0.000009236784648418103) 13091.71554058384 iter/sec (stddev: 0.000010823964594858789) 0.84
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] 7808.563690835971 iter/sec (stddev: 0.00001773978281949938) 6938.158344510628 iter/sec (stddev: 0.000018666009454119386) 0.89
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] 4030.081197739529 iter/sec (stddev: 0.00003011781479917681) 3386.612078990588 iter/sec (stddev: 0.000032436980602163054) 0.84
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] 11960.039117328446 iter/sec (stddev: 0.000011255484245783646) 9257.771301105973 iter/sec (stddev: 0.000012109411309515935) 0.77
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] 5235.245311818328 iter/sec (stddev: 0.00003969839580669262) 3845.31711993532 iter/sec (stddev: 0.000025610569858480256) 0.73
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] 2400.8067190737574 iter/sec (stddev: 0.000036675176664086894) 1888.5897607528568 iter/sec (stddev: 0.00015039915793162506) 0.79
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[1] 41984.950494451696 iter/sec (stddev: 0.000003993410322610523) 32626.9330438905 iter/sec (stddev: 0.00000581526700329527) 0.78
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[2] 16722.51755275202 iter/sec (stddev: 0.000013952963141497537) 12183.535211096323 iter/sec (stddev: 0.0000913220953165528) 0.73
benchmarks/test_guard_concurrency.py::test_g15c_worker_pool_floor_control[4] 6786.8627602410825 iter/sec (stddev: 0.000024236226576611354) 6234.8875418722655 iter/sec (stddev: 0.00003645578690046843) 0.92
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container 1679018.7881372292 iter/sec (stddev: 2.957616498599548e-8) 1519963.5239118275 iter/sec (stddev: 4.73936786390673e-8) 0.91
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope 1783932.3443662908 iter/sec (stddev: 3.192051103286996e-8) 1594934.5516631696 iter/sec (stddev: 3.18962324705687e-8) 0.89
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch 3591.7216994203445 iter/sec (stddev: 0.000008931297481072736) 3273.0857808711353 iter/sec (stddev: 0.000012283093948527261) 0.91
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control 58574.972654491066 iter/sec (stddev: 0.0000015415411414897238) 57375.97910630188 iter/sec (stddev: 0.0000027231786894094364) 0.98
benchmarks/test_guard_lifecycle.py::test_g7b_request_cycle_sync 470035.90439791686 iter/sec (stddev: 9.504930441185017e-8) 423240.79540104314 iter/sec (stddev: 8.353396994752869e-8) 0.90
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale 72103.57801208971 iter/sec (stddev: 0.000001495072599613251) 63167.63569641636 iter/sec (stddev: 0.000002107807341798179) 0.88
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers 638.3634246858825 iter/sec (stddev: 0.00125444525254309) 564.9937617643658 iter/sec (stddev: 0.0010786054759759783) 0.89
benchmarks/test_guard_resolve.py::test_g1_transient_resolve 2262611.4710867153 iter/sec (stddev: 2.6560986126991852e-8) 1881703.9525482305 iter/sec (stddev: 3.564850359065427e-8) 0.83
benchmarks/test_guard_resolve.py::test_g2_cached_resolve 3567318.1291142926 iter/sec (stddev: 9.335817523301916e-9) 3109860.5187163213 iter/sec (stddev: 3.8337461034704355e-8) 0.87
benchmarks/test_guard_resolve.py::test_g3_deep_chain 835251.872081605 iter/sec (stddev: 1.3080956734914201e-7) 747402.1981247334 iter/sec (stddev: 6.470115908009587e-8) 0.89
benchmarks/test_guard_resolve.py::test_g4_wide_resolve 471936.8531500896 iter/sec (stddev: 4.0443795873989275e-7) 444104.9114367946 iter/sec (stddev: 4.1761664070317884e-7) 0.94
benchmarks/test_guard_resolve.py::test_g5_cross_scope 2081980.6964984536 iter/sec (stddev: 2.3613703388209097e-8) 1753124.8683764848 iter/sec (stddev: 2.8219596410056658e-8) 0.84
benchmarks/test_guard_resolve.py::test_g9_context_resolve 1648001.199086896 iter/sec (stddev: 1.4186550019163246e-7) 1333909.1374438996 iter/sec (stddev: 1.6149405786368403e-7) 0.81
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve 884409.257731147 iter/sec (stddev: 4.385935237067249e-8) 805359.1821415069 iter/sec (stddev: 7.027716715947648e-8) 0.91
benchmarks/test_guard_resolve.py::test_g18_alias_hop 3840581.3103868603 iter/sec (stddev: 8.632498645105599e-9) 3401982.6210326203 iter/sec (stddev: 3.295357721128272e-8) 0.89
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain 45252.081471302314 iter/sec (stddev: 0.0000023496503351584774) 36269.042743564816 iter/sec (stddev: 0.0000034716544723171916) 0.80
benchmarks/test_guard_validate.py::test_g11_validate_wide 26196.36827348353 iter/sec (stddev: 0.0000027100718712669715) 21672.715184302084 iter/sec (stddev: 0.0000037443032008704793) 0.83

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

@lesnik512
lesnik512 merged commit 192a33b into main Nov 3, 2026
12 checks passed
@lesnik512
lesnik512 deleted the refactor/resolver-error-enrichment branch November 3, 2026 04:38
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