I read the entire long description, but admittedly skimmed some. Certainly
90%+ can be done, in almost the same way, with `class Mine(Simple
namespace)`, but I could have missed some corner.

Perhaps highlight that. But I am certain I remain -1, in any event.

On Sun, May 2, 2021, 5:16 AM Matt del Valle <matthew...@gmail.com> wrote:

> Nope!
>
> I know it's hard to convey tone through text, so I just wanna assure you
> I'm not being snarky or whatever.
>
> With that said, I'd ask that you please read through the full proposal
> before making assumptions like 'this is exactly the same as
> types.SimpleNamespace'. I know it's a bit long (sorry for that!), but
> that's the only way we can be on the same page for this discussion. There
> are several code examples in there which do things that could not be done
> by using types.SimpleNamespace.
>
> Also, types.SimpleNamespace doesn't offer the same declarative syntax
> (where assigning to names within its block gets transformed into
> attributes). Its interface is mostly dynamic, whereas the way a 'namespace'
> block would be used would be declarative.
>
> The closest analogue to the proposed 'namespace' block, would not be
> types.SimpleNamespace, but rather, a 'class' definition that makes use of
> the syntactic sugar for declaring class attributes when assigning to names
> within the class block. It might well be that the consensus is that this
> suggestion is *too similar* to that and *doesn't offer enough* to warrant
> adding a new keyword. That's fine. I wrote this up knowing that it's a
> pretty high bar to add any new keyword to an existing language and there's
> a good chance this doesn't go anywhere. I still just wanted to get a
> conversation going to get a feel for the community's appetite for something
> like this.
>
> But yeah, probably the biggest difference between a namespace block and a
> class block would be that a namespace block within a class block still
> allows any functions that are defined within it to become bound methods for
> that class, which would not be the case using a nested class block. Also,
> attributes are not actually stored within the namespace, but rather within
> whatever scope the namespace block ultimately lives. This is very different
> to how nested classes or types.SimpleNamespace works.
>
> I'm happy to answer any questions, just please read the full proposal
> first :)
>
> On Sun, May 2, 2021 at 1:25 AM David Mertz <me...@gnosis.cx> wrote:
>
>> So this is exactly the same as `types.SimpleNamespace`, but with special
>> syntax?!
>>
>> On Sat, May 1, 2021, 7:57 PM Matt del Valle <matthew...@gmail.com> wrote:
>>
>>> Hi all!
>>>
>>> So this is a proposal for a new soft language keyword:
>>>
>>> namespace
>>>
>>> I started writing this up a few hours ago and then realized as it was
>>> starting to get away from me that there was no way this was going to be
>>> even remotely readable in email format, so I created a repo for it instead
>>> and will just link to it here. The content of the post is the README.md,
>>> which github will render for you at the following link:
>>>
>>> https://github.com/matthewgdv/namespace
>>>
>>> I'll give the TLDR form here, but I would ask that before you reply
>>> please read the full thing first, since I don't think a few bullet-points
>>> give the necessary context. You might end up bringing up points I've
>>> already addressed. It will also be very hard to see the potential benefits
>>> without seeing some actual code examples.
>>>
>>> TLDR:
>>>
>>> - In a single sentence: this proposal aims to add syntactic sugar for
>>> setting and accessing module/class/local attributes with dots in their name
>>>
>>> - the syntax for the namespace keyword is similar to the simplest form
>>> of a class definition statement (one that implicitly inherits from object),
>>> so:
>>>
>>> namespace some_name:
>>>    ...  # code goes here
>>>
>>> - any name bound within the namespace block is bound in exactly the same
>>> way it would be bound if the namespace block were not there, except that
>>> the namespace's name and a dot are prepended to the key when being inserted
>>> into the module/class/locals dict.
>>>
>>> - a namespace block leaves behind an object that serves to process
>>> attribute lookups on it by prepending its name plus a dot to the lookup and
>>> then delegating it to whatever object it is in scope of
>>> (module/class/locals)
>>>
>>> - This would allow for small performance wins by replacing the use of
>>> class declarations that is currently common in python for namespacing, as
>>> well as making the writer's intent explicit
>>>
>>> - Crucially, it allows for namespacing the content of classes, by
>>> grouping together related methods. This improves code clarity and is useful
>>> for library authors who design their libraries with IDE autocompletion in
>>> mind. This cannot currently be done by nesting classes.
>>>
>>> I live in the UK so I'm going to bed now (after working on this for like
>>> the last 6 hours). I'll be alive again in maybe 8 hours or so and will be
>>> able to reply to any posts here then.
>>>
>>> Cheers everyone :)
>>> _______________________________________________
>>> Python-ideas mailing list -- python-ideas@python.org
>>> To unsubscribe send an email to python-ideas-le...@python.org
>>> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>>> Message archived at
>>> https://mail.python.org/archives/list/python-ideas@python.org/message/7DAX2JTKZKLRT4CKKBRACNBJLHQUCN6E/
>>> Code of Conduct: http://python.org/psf/codeofconduct/
>>>
>>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/P7UQGKAHPQ2OS2X64WA6DQT4PVY6QLFZ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to