New submission from Serhiy Storchaka <[email protected]>: Usually non-string keyword names are rejected.
>>> def f(**kwargs): pass
>>>
>>>
>>>
...
>>> f(**{0:0})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: f() keywords must be strings
>>> dict(**{0:0})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: keywords must be strings
There are checks in multiple places that satisfy this: in
_PyEval_EvalCodeWithName(), PyArg_ValidateKeywordArguments(),
PyArg_ParseTupleAndKeywords(), etc.
But SimpleNamespace is an exception.
>>> from types import SimpleNamespace
>>> SimpleNamespace(**{0:0})
namespace()
Non-string keys are omitted in the repr. Wouldn't be better to add also the
check that keyword names for SimpleNamespace constructor are strings?
I don't know how classify this issue, as a bug or an enhancement.
Based on the StackOverflow question:
https://stackoverflow.com/questions/46164770/accepting-integers-as-keys-of-kwargs.
----------
components: Interpreter Core
messages: 303450
nosy: haypo, serhiy.storchaka
priority: normal
severity: normal
status: open
title: SimpleNamespace accepts non-string keyword names
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue31655>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
