Skip to content

fix(errors): drop skip_creator_parsing advice for parameterized generic params - #549

Merged
lesnik512 merged 1 commit into
mainfrom
fix/generic-param-error-advice
Oct 3, 2026
Merged

lesnik512 merged 1 commit into
mainfrom
fix/generic-param-error-advice

Conversation

@lesnik512

Copy link
Copy Markdown
Member

UnsupportedCreatorParameterError for a parameter with a parameterized generic annotation (e.g. list[Dep]) and no default listed three fixes: pass the value via kwargs, give the parameter a default, or use skip_creator_parsing=True. The third does not work on its own: with skip_creator_parsing=True and no kwargs, the provider raises CreatorCallError at resolve. It only works combined with kwargs, and kwargs alone already fixes it without skipping parsing. The message now lists only the two fixes that work.

Follow-up to #548, which fixed the same issue for positional-only parameters. The troubleshooting doc already shows skip_creator_parsing=True together with kwargs, so it needs no change.

Test: test_parameterized_generic_param_without_default_raises_at_declaration now asserts the message does not mention skip_creator_parsing (failed before the fix).

@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: afbeffa Previous: 3024599 Ratio
benchmarks/test_guard_by_type.py::test_g16_resolve_by_type 7627633.573961437 iter/sec (stddev: 1.2096209920926836e-8) 4972342.340257556 iter/sec (stddev: 1.2045954453644896e-8) 0.65
benchmarks/test_guard_by_type.py::test_g17_resolve_by_type_large_registry 7743002.319661641 iter/sec (stddev: 5.108602154868414e-9) 5113098.674820603 iter/sec (stddev: 6.550490087339288e-9) 0.66
benchmarks/test_guard_cold.py::test_g8_cold_first_resolve 30475.134203457405 iter/sec (stddev: 0.00016239451354901828) 22446.376412811285 iter/sec (stddev: 0.00004252922737051977) 0.74
benchmarks/test_guard_cold.py::test_g8b_cold_first_resolve_cached 28403.856980042874 iter/sec (stddev: 0.00002604894806718274) 19156.522597554347 iter/sec (stddev: 0.00011353683686313033) 0.67
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[1] 913.5584165711515 iter/sec (stddev: 0.00004540532762143574) 634.3219922975142 iter/sec (stddev: 0.000022887746462580654) 0.69
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[2] 875.8440472856208 iter/sec (stddev: 0.000016963327911359324) 597.2389777647775 iter/sec (stddev: 0.00004338402700575293) 0.68
benchmarks/test_guard_concurrency.py::test_g14_concurrent_cached_hit[4] 781.002203092556 iter/sec (stddev: 0.00003533924304993713) 511.4188447445361 iter/sec (stddev: 0.00011835207842804579) 0.65
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[1] 3279.358463480453 iter/sec (stddev: 0.00009441882761585645) 2045.5607054062446 iter/sec (stddev: 0.0001942587023716988) 0.62
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[2] 2071.3743112869374 iter/sec (stddev: 0.0012259367127246208) 1657.9994056893413 iter/sec (stddev: 0.00017325964741790302) 0.80
benchmarks/test_guard_concurrency.py::test_g15_concurrent_first_resolve[4] 1866.1373637594997 iter/sec (stddev: 0.00010942345030197525) 1191.0661581565967 iter/sec (stddev: 0.0001739336721078) 0.64
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[1] 3368.146684580272 iter/sec (stddev: 0.0001094285554190323) 1444.6312566698014 iter/sec (stddev: 0.0021141525427282536) 0.43
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[2] 2415.9886261689576 iter/sec (stddev: 0.00010656605707032626) 1603.2296741120745 iter/sec (stddev: 0.00020451903953873653) 0.66
benchmarks/test_guard_concurrency.py::test_g15b_concurrent_first_resolve_sibling_children[4] 1570.4929091455115 iter/sec (stddev: 0.0001034445798139798) 1028.040428066514 iter/sec (stddev: 0.0002482775438370546) 0.65
benchmarks/test_guard_lifecycle.py::test_g6_build_child_container 1631139.7629918933 iter/sec (stddev: 2.9087909184034157e-8) 1108278.259522545 iter/sec (stddev: 6.261416416750633e-8) 0.68
benchmarks/test_guard_lifecycle.py::test_g6b_build_child_container_auto_scope 1508358.7586077692 iter/sec (stddev: 1.4176886106622512e-8) 1035607.2316689156 iter/sec (stddev: 2.4888937171356226e-8) 0.69
benchmarks/test_guard_lifecycle.py::test_g7_request_lifecycle_batch 5240.473532212592 iter/sec (stddev: 0.000003565511178807103) 3337.6706788863667 iter/sec (stddev: 0.000011268085532638387) 0.64
benchmarks/test_guard_lifecycle.py::test_g7c_event_loop_floor_control 117598.88528234397 iter/sec (stddev: 9.24074466892438e-7) 76265.89689117327 iter/sec (stddev: 9.974475146687365e-7) 0.65
benchmarks/test_guard_lifecycle.py::test_g13_teardown_at_scale 92657.03851210247 iter/sec (stddev: 7.545132815981689e-7) 62827.4504043702 iter/sec (stddev: 0.0000011247879267387115) 0.68
benchmarks/test_guard_lifecycle.py::test_g13b_teardown_at_scale_async_no_finalizers 1191.3371122222934 iter/sec (stddev: 0.00005915302323265407) 791.8332302857883 iter/sec (stddev: 0.000016976867860579708) 0.66
benchmarks/test_guard_resolve.py::test_g1_transient_resolve 4396060.426386851 iter/sec (stddev: 1.9013449933167298e-8) 2974630.3445572695 iter/sec (stddev: 2.661938952855255e-8) 0.68
benchmarks/test_guard_resolve.py::test_g2_cached_resolve 7017185.367691096 iter/sec (stddev: 1.1514111124629136e-8) 4945804.614886791 iter/sec (stddev: 6.255606584691196e-9) 0.70
benchmarks/test_guard_resolve.py::test_g3_deep_chain 1580005.9100195477 iter/sec (stddev: 2.337204038423808e-8) 1024214.0853245198 iter/sec (stddev: 5.03784072946756e-8) 0.65
benchmarks/test_guard_resolve.py::test_g4_wide_resolve 808825.4830819586 iter/sec (stddev: 3.318703998769906e-7) 599208.9423321768 iter/sec (stddev: 3.245293688010195e-7) 0.74
benchmarks/test_guard_resolve.py::test_g5_cross_scope 3946370.7940752045 iter/sec (stddev: 1.6186017469393577e-8) 2799147.9113528454 iter/sec (stddev: 2.592931237237138e-8) 0.71
benchmarks/test_guard_resolve.py::test_g9_context_resolve 1834452.242182027 iter/sec (stddev: 2.2699840221251798e-7) 1534679.8512021066 iter/sec (stddev: 1.64043516248611e-7) 0.84
benchmarks/test_guard_resolve.py::test_g12_override_active_resolve 896993.0818460275 iter/sec (stddev: 4.880786888071048e-7) 1020326.1207204745 iter/sec (stddev: 3.1084121782950224e-8) 1.14
benchmarks/test_guard_resolve.py::test_g18_alias_hop 4288812.217321247 iter/sec (stddev: 9.935521540207463e-8) 3441089.3249916164 iter/sec (stddev: 9.653465010583164e-9) 0.80
benchmarks/test_guard_validate.py::test_g10_validate_deep_chain 48608.98739339193 iter/sec (stddev: 0.00001438590746662683) 33535.94634257725 iter/sec (stddev: 0.0000313646871484374) 0.69
benchmarks/test_guard_validate.py::test_g11_validate_wide 29057.66965266146 iter/sec (stddev: 0.000014036289916963359) 20338.894524902546 iter/sec (stddev: 0.000021411476357238284) 0.70

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

@lesnik512
lesnik512 merged commit 3bb845c into main Oct 3, 2026
10 checks passed
@lesnik512
lesnik512 deleted the fix/generic-param-error-advice branch October 3, 2026 09:56
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