@@ -1584,7 +1584,7 @@ PyArg_ValidateKeywordArguments(PyObject *kwargs)
1584
1584
}
1585
1585
if (!_PyDict_HasOnlyStringKeys (kwargs )) {
1586
1586
PyErr_SetString (PyExc_TypeError ,
1587
- "keyword arguments must be strings" );
1587
+ "keywords must be strings" );
1588
1588
return 0 ;
1589
1589
}
1590
1590
return 1 ;
@@ -1655,7 +1655,7 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
1655
1655
nkwargs = (kwargs == NULL ) ? 0 : PyDict_GET_SIZE (kwargs );
1656
1656
if (nargs + nkwargs > len ) {
1657
1657
PyErr_Format (PyExc_TypeError ,
1658
- "%s %s takes at most %d argument%s (%zd given)" ,
1658
+ "%.200s %s takes at most %d argument%s (%zd given)" ,
1659
1659
(fname == NULL ) ? "function" : fname ,
1660
1660
(fname == NULL ) ? "" : "()" ,
1661
1661
len ,
@@ -1705,8 +1705,10 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
1705
1705
}
1706
1706
if (max < nargs ) {
1707
1707
PyErr_Format (PyExc_TypeError ,
1708
- "Function takes %s %d positional arguments"
1708
+ "%.200s%s takes %s %d positional arguments"
1709
1709
" (%d given)" ,
1710
+ (fname == NULL ) ? "function" : fname ,
1711
+ (fname == NULL ) ? "" : "()" ,
1710
1712
(min != INT_MAX ) ? "at most" : "exactly" ,
1711
1713
max , nargs );
1712
1714
return cleanreturn (0 , & freelist );
@@ -1752,8 +1754,10 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
1752
1754
* or the end of the format. */
1753
1755
}
1754
1756
else {
1755
- PyErr_Format (PyExc_TypeError , "Required argument "
1756
- "'%s' (pos %d) not found" ,
1757
+ PyErr_Format (PyExc_TypeError , "%.200s%s missing required "
1758
+ "argument '%s' (pos %d)" ,
1759
+ (fname == NULL ) ? "function" : fname ,
1760
+ (fname == NULL ) ? "" : "()" ,
1757
1761
kwlist [i ], i + 1 );
1758
1762
return cleanreturn (0 , & freelist );
1759
1763
}
@@ -1779,8 +1783,10 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
1779
1783
1780
1784
if (skip ) {
1781
1785
PyErr_Format (PyExc_TypeError ,
1782
- "Function takes %s %d positional arguments"
1786
+ "%.200s%s takes %s %d positional arguments"
1783
1787
" (%d given)" ,
1788
+ (fname == NULL ) ? "function" : fname ,
1789
+ (fname == NULL ) ? "" : "()" ,
1784
1790
(Py_MIN (pos , min ) < i ) ? "at least" : "exactly" ,
1785
1791
Py_MIN (pos , min ), nargs );
1786
1792
return cleanreturn (0 , & freelist );
@@ -1802,8 +1808,10 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
1802
1808
if (current_arg ) {
1803
1809
/* arg present in tuple and in dict */
1804
1810
PyErr_Format (PyExc_TypeError ,
1805
- "Argument given by name ('%s') "
1811
+ "argument for %.200s%s given by name ('%s') "
1806
1812
"and position (%d)" ,
1813
+ (fname == NULL ) ? "function" : fname ,
1814
+ (fname == NULL ) ? "" : "()" ,
1807
1815
kwlist [i ], i + 1 );
1808
1816
return cleanreturn (0 , & freelist );
1809
1817
}
@@ -1826,8 +1834,10 @@ vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
1826
1834
if (!match ) {
1827
1835
PyErr_Format (PyExc_TypeError ,
1828
1836
"'%U' is an invalid keyword "
1829
- "argument for this function" ,
1830
- key );
1837
+ "argument for %.200s%s" ,
1838
+ key ,
1839
+ (fname == NULL ) ? "this function" : fname ,
1840
+ (fname == NULL ) ? "" : "()" );
1831
1841
return cleanreturn (0 , & freelist );
1832
1842
}
1833
1843
}
@@ -2060,7 +2070,7 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
2060
2070
}
2061
2071
if (nargs + nkwargs > len ) {
2062
2072
PyErr_Format (PyExc_TypeError ,
2063
- "%s %s takes at most %d argument%s (%zd given)" ,
2073
+ "%.200s %s takes at most %d argument%s (%zd given)" ,
2064
2074
(parser -> fname == NULL ) ? "function" : parser -> fname ,
2065
2075
(parser -> fname == NULL ) ? "" : "()" ,
2066
2076
len ,
@@ -2070,7 +2080,9 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
2070
2080
}
2071
2081
if (parser -> max < nargs ) {
2072
2082
PyErr_Format (PyExc_TypeError ,
2073
- "Function takes %s %d positional arguments (%d given)" ,
2083
+ "%200s%s takes %s %d positional arguments (%d given)" ,
2084
+ (parser -> fname == NULL ) ? "function" : parser -> fname ,
2085
+ (parser -> fname == NULL ) ? "" : "()" ,
2074
2086
(parser -> min != INT_MAX ) ? "at most" : "exactly" ,
2075
2087
parser -> max , nargs );
2076
2088
return cleanreturn (0 , & freelist );
@@ -2115,15 +2127,19 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
2115
2127
if (i < pos ) {
2116
2128
Py_ssize_t min = Py_MIN (pos , parser -> min );
2117
2129
PyErr_Format (PyExc_TypeError ,
2118
- "Function takes %s %d positional arguments"
2130
+ "%.200s%s takes %s %d positional arguments"
2119
2131
" (%d given)" ,
2132
+ (parser -> fname == NULL ) ? "function" : parser -> fname ,
2133
+ (parser -> fname == NULL ) ? "" : "()" ,
2120
2134
min < parser -> max ? "at least" : "exactly" ,
2121
2135
min , nargs );
2122
2136
}
2123
2137
else {
2124
2138
keyword = PyTuple_GET_ITEM (kwtuple , i - pos );
2125
- PyErr_Format (PyExc_TypeError , "Required argument "
2126
- "'%U' (pos %d) not found" ,
2139
+ PyErr_Format (PyExc_TypeError , "%.200s%s missing required "
2140
+ "argument '%U' (pos %d)" ,
2141
+ (parser -> fname == NULL ) ? "function" : parser -> fname ,
2142
+ (parser -> fname == NULL ) ? "" : "()" ,
2127
2143
keyword , i + 1 );
2128
2144
}
2129
2145
return cleanreturn (0 , & freelist );
@@ -2153,8 +2169,10 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
2153
2169
if (current_arg ) {
2154
2170
/* arg present in tuple and in dict */
2155
2171
PyErr_Format (PyExc_TypeError ,
2156
- "Argument given by name ('%U') "
2172
+ "argument for %.200s%s given by name ('%U') "
2157
2173
"and position (%d)" ,
2174
+ (parser -> fname == NULL ) ? "function" : parser -> fname ,
2175
+ (parser -> fname == NULL ) ? "" : "()" ,
2158
2176
keyword , i + 1 );
2159
2177
return cleanreturn (0 , & freelist );
2160
2178
}
@@ -2184,8 +2202,10 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
2184
2202
if (!match ) {
2185
2203
PyErr_Format (PyExc_TypeError ,
2186
2204
"'%U' is an invalid keyword "
2187
- "argument for this function" ,
2188
- keyword );
2205
+ "argument for %.200s%s" ,
2206
+ keyword ,
2207
+ (parser -> fname == NULL ) ? "this function" : parser -> fname ,
2208
+ (parser -> fname == NULL ) ? "" : "()" );
2189
2209
}
2190
2210
return cleanreturn (0 , & freelist );
2191
2211
}
@@ -2365,7 +2385,7 @@ unpack_stack(PyObject **args, Py_ssize_t nargs, const char *name,
2365
2385
if (name != NULL )
2366
2386
PyErr_Format (
2367
2387
PyExc_TypeError ,
2368
- "%s expected %s%zd arguments, got %zd" ,
2388
+ "%.200s expected %s%zd arguments, got %zd" ,
2369
2389
name , (min == max ? "" : "at least " ), min , nargs );
2370
2390
else
2371
2391
PyErr_Format (
@@ -2384,7 +2404,7 @@ unpack_stack(PyObject **args, Py_ssize_t nargs, const char *name,
2384
2404
if (name != NULL )
2385
2405
PyErr_Format (
2386
2406
PyExc_TypeError ,
2387
- "%s expected %s%zd arguments, got %zd" ,
2407
+ "%.200s expected %s%zd arguments, got %zd" ,
2388
2408
name , (min == max ? "" : "at most " ), max , nargs );
2389
2409
else
2390
2410
PyErr_Format (
@@ -2469,7 +2489,7 @@ _PyArg_NoKeywords(const char *funcname, PyObject *kwargs)
2469
2489
return 1 ;
2470
2490
}
2471
2491
2472
- PyErr_Format (PyExc_TypeError , "%s does not take keyword arguments" ,
2492
+ PyErr_Format (PyExc_TypeError , "%.200s does not take keyword arguments" ,
2473
2493
funcname );
2474
2494
return 0 ;
2475
2495
}
@@ -2486,7 +2506,7 @@ _PyArg_NoStackKeywords(const char *funcname, PyObject *kwnames)
2486
2506
return 1 ;
2487
2507
}
2488
2508
2489
- PyErr_Format (PyExc_TypeError , "%s does not take keyword arguments" ,
2509
+ PyErr_Format (PyExc_TypeError , "%.200s does not take keyword arguments" ,
2490
2510
funcname );
2491
2511
return 0 ;
2492
2512
}
@@ -2504,7 +2524,7 @@ _PyArg_NoPositional(const char *funcname, PyObject *args)
2504
2524
if (PyTuple_GET_SIZE (args ) == 0 )
2505
2525
return 1 ;
2506
2526
2507
- PyErr_Format (PyExc_TypeError , "%s does not take positional arguments" ,
2527
+ PyErr_Format (PyExc_TypeError , "%.200s does not take positional arguments" ,
2508
2528
funcname );
2509
2529
return 0 ;
2510
2530
}
0 commit comments