-
-
Notifications
You must be signed in to change notification settings - Fork 32k
Allow specifying SimpleNamespace attributes as a mapping/iterable in a positional argument #108191
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
…e constructor SimpleNamespace({'a': 1, 'b': 2}) and SimpleNamespace([('a', 1), ('b', 2)]) are now the same as SimpleNamespace(a=1, b=2).
…e constructor SimpleNamespace({'a': 1, 'b': 2}) and SimpleNamespace([('a', 1), ('b', 2)]) are now the same as SimpleNamespace(a=1, b=2).
@rhettinger, @ericsnowcurrently, I would like to know your opinion about this feature. Raymond, would it be useful to you, in any way? Eric, is it compatible with your vision of SimpleNamespace? If both answers are "yes", I'll merge the PR. If both answers are "no", I'll withdraw it and close the issue. If answers are mixed, we should have a discussion. |
Yeah, I'm fine with this. It didn't seem worth it originally but it certainly isn't a bad thing. |
…tructor (GH-108195) SimpleNamespace({'a': 1, 'b': 2}) and SimpleNamespace([('a', 1), ('b', 2)]) are now the same as SimpleNamespace(a=1, b=2).
Congrats for landing this new feature. |
It is a minor feature. It was hanging for such long time only because I was not sure that it is worthy. |
Uh oh!
There was an error while loading. Please reload this page.
Feature or enhancement
Has this already been discussed elsewhere?
I have already discussed this feature proposal on Discourse
Links to previous discussion of this feature:
#96145
https://mail.python.org/archives/list/python-dev@python.org/message/TYIXRGOLWGV5TNJ3XMV443O3RWLEYB65/
Proposal:
It was discussed in the context of adding controversial AttrDict. The reason for adding AttrDict was to allow JSON object attributes to be accessed as Python object attributes rather than dict keys. The reason for not using SimpleNamespace for this was that you need to use a wrapper
lambda x: SimpleNamespace(**x)
, which makes this solution less obvious.Supporting a positional argument in
SimpleNamespace()
, which can be a mapping or an iterable of key-value pairs (like in thedict
constructor) will make using SimpleNamespace with JSON more convenient.SimpleNamespace({'a': 1, 'b': 2})
is the same asSimpleNamespace([('a', 1), ('b', 2)])
is the same asSimpleNamespace(a=1, b=2)
.Linked PRs
The text was updated successfully, but these errors were encountered: