Skip to content

ch_func_to_all_pk: explicit excess_keywords policy, default unchanged (#95) - #100

Merged
thorwhalen merged 2 commits into
masterfrom
fix/ch-func-to-all-pk-excess-policy
Oct 13, 2026
Merged

thorwhalen merged 2 commits into
masterfrom
fix/ch-func-to-all-pk-excess-policy

Conversation

@thorwhalen

Copy link
Copy Markdown
Member

Addresses #95 without changing any default behaviour (i2 is a foundation package; meshed's hook_up relies on drop without *args, while the 0.1.75 doctest documents forward with *args, so no single default can be strictly compatible).

  • New keyword-only excess_keywords=None|"drop"|"forward". None (default) = the historical per-path rule, so existing calls are unchanged; "drop"/"forward" give one rule on either path (both paths now share the all-PK machinery).
  • The sharp edge from the issue (ch_func_to_all_pk(f4)(1, 2, 3) → dict() argument after ** must be a mapping) now raises a clear TypeError (still TypeError; anything with keys() is still accepted, as for **).
  • Which default to converge on is the maintainer's call: manual-task Decision: default excess-keyword policy of ch_func_to_all_pk (follow-up to #95) #99 with my recommendation.

Verification: differential test of old (master) vs new default over 16,848 calls × 9 callable shapes: 0 mismatches. i2: 819 tests + doctests pass; meshed and py2http decorators tests pass. Dependents gate (priv test-dependents i2 --transitive): 101 dependents, statuses identical to the master baseline (config2py, ef, grub failed in the baseline run and passed with the change, i.e. flaky, not a regression; 20 pre-existing failures in both).

Adversarial review (fresh Opus, 229,600-call differential): found one real incompatibility (my stray-positional check required a Mapping, master accepted any object with keys(), e.g. a pandas Series); fixed and tested. Callers meshed, py2http and i2.multi_object verified unaffected.

Closes #95

🤖 Generated with Claude Code

thorwhalen and others added 2 commits October 13, 2026 05:26
…fault unchanged; clear error for a stray positional (#95)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…s() (as **)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@thorwhalen
thorwhalen merged commit 968be46 into master Oct 13, 2026
12 checks passed
@thorwhalen
thorwhalen deleted the fix/ch-func-to-all-pk-excess-policy branch October 13, 2026 06:12
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.

ch_func_to_all_pk: unify the excess-keyword policy of the with-*args and without-*args paths

1 participant