Skip to content

Allow specifying SimpleNamespace attributes as a mapping/iterable in a positional argument #108191

Closed

Description

@serhiy-storchaka

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/[email protected]/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 the dict constructor) will make using SimpleNamespace with JSON more convenient.

SimpleNamespace({'a': 1, 'b': 2}) is the same as SimpleNamespace([('a', 1), ('b', 2)]) is the same as SimpleNamespace(a=1, b=2).

Linked PRs

Activity

  1. added 2 commits that reference this issue on Aug 21, 2023
  2. changed the title [-]Allow to specify SimpleNamespace attributes as a positional argument[/-] [+]Allow specifying SimpleNamespace attributes as positional arguments[/+] on Aug 21, 2023
  3. changed the title [-]Allow specifying SimpleNamespace attributes as positional arguments[/-] [+]Allow specifying SimpleNamespace attributes as a mapping/iterable in a positional argument[/+] on Aug 21, 2023
  4. serhiy-storchaka commented on Aug 26, 2023

    @serhiy-storchaka
    MemberAuthor

    @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.

  5. ericsnowcurrently commented on Aug 29, 2023

    @ericsnowcurrently
    Member

    Yeah, I'm fine with this. It didn't seem worth it originally but it certainly isn't a bad thing.

  6. added a commit that references this issue on Apr 24, 2024
  7. vstinner commented on Apr 25, 2024

    @vstinner
    Member

    Congrats for landing this new feature.

  8. serhiy-storchaka commented on Apr 25, 2024

    @serhiy-storchaka
    MemberAuthor

    It is a minor feature. It was hanging for such long time only because I was not sure that it is worthy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    interpreter-core(Objects, Python, Grammar, and Parser dirs)type-featureA feature request or enhancement

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions