Skip to content

Commit 0a94e22

Browse files
authored
Merge pull request #459 from EmbraceLife/master
enable meta.delegates to enforce KEYWORD_ONLY for kwargs from
2 parents 9e4874c + 41131f0 commit 0a94e22

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

fastcore/meta.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def _f(f):
118118
sig = inspect.signature(from_f)
119119
sigd = dict(sig.parameters)
120120
k = sigd.pop('kwargs')
121-
s2 = {k:v for k,v in inspect.signature(to_f).parameters.items()
121+
s2 = {k:v.replace(kind=inspect.Parameter.KEYWORD_ONLY) for k,v in inspect.signature(to_f).parameters.items()
122122
if v.default != inspect.Parameter.empty and k not in sigd and k not in but}
123123
sigd.update(s2)
124124
if keep: sigd['kwargs'] = k

nbs/07_meta.ipynb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -878,7 +878,7 @@
878878
" sig = inspect.signature(from_f)\n",
879879
" sigd = dict(sig.parameters)\n",
880880
" k = sigd.pop('kwargs')\n",
881-
" s2 = {k:v for k,v in inspect.signature(to_f).parameters.items()\n",
881+
" s2 = {k:v.replace(kind=inspect.Parameter.KEYWORD_ONLY) for k,v in inspect.signature(to_f).parameters.items()\n",
882882
" if v.default != inspect.Parameter.empty and k not in sigd and k not in but}\n",
883883
" sigd.update(s2)\n",
884884
" if keep: sigd['kwargs'] = k\n",
@@ -966,7 +966,7 @@
966966
"def foo(c, a, **kwargs):\n",
967967
" return c + baz(a, **kwargs)\n",
968968
"\n",
969-
"test_sig(foo, '(c, a, b=2)')\n",
969+
"test_sig(foo, '(c, a, *, b=2)')\n",
970970
"inspect.signature(foo)"
971971
]
972972
},
@@ -998,7 +998,7 @@
998998
"def foo(c, a, **kwargs):\n",
999999
" return c + baz(a, **kwargs)\n",
10001000
"\n",
1001-
"test_sig(foo, '(c, a, b=2, **kwargs)')\n",
1001+
"test_sig(foo, '(c, a, *, b=2, **kwargs)')\n",
10021002
"inspect.signature(foo)"
10031003
]
10041004
},
@@ -1030,7 +1030,7 @@
10301030
"\n",
10311031
"@delegates(basefoo)\n",
10321032
"def foo(a, b=1, **kwargs): pass\n",
1033-
"test_sig(foo, '(a, b=1, c=2)') # e and d are not included b/c they don't have default parameters.\n",
1033+
"test_sig(foo, '(a, b=1, *, c=2)') # e and d are not included b/c they don't have default parameters.\n",
10341034
"inspect.signature(foo)"
10351035
]
10361036
},
@@ -1065,7 +1065,7 @@
10651065
"@delegates(basefoo, but= ['d'])\n",
10661066
"def foo(a, b=1, **kwargs): pass\n",
10671067
"\n",
1068-
"test_sig(foo, '(a, b=1, c=2)')\n",
1068+
"test_sig(foo, '(a, b=1, *, c=2)')\n",
10691069
"inspect.signature(foo)"
10701070
]
10711071
},
@@ -1093,7 +1093,7 @@
10931093
" def bar(cls, c=3, **kwargs):\n",
10941094
" pass\n",
10951095
"\n",
1096-
"test_sig(_T.bar, '(c=3, a=1, b=2)')"
1096+
"test_sig(_T.bar, '(c=3, *, a=1, b=2)')"
10971097
]
10981098
},
10991099
{
@@ -1119,7 +1119,7 @@
11191119
" pass\n",
11201120
"\n",
11211121
"t = _T()\n",
1122-
"test_sig(t.bar, '(c=3, a=1, b=2)')"
1122+
"test_sig(t.bar, '(c=3, *, a=1, b=2)')"
11231123
]
11241124
},
11251125
{
@@ -1142,7 +1142,7 @@
11421142
"class Foo(BaseFoo):\n",
11431143
" def __init__(self, a, b=1, **kwargs): super().__init__(**kwargs)\n",
11441144
"\n",
1145-
"test_sig(Foo, '(a, b=1, c=2)')"
1145+
"test_sig(Foo, '(a, b=1, *, c=2)')"
11461146
]
11471147
},
11481148
{

0 commit comments

Comments
 (0)