[Python-Dev] PEP 591 discussion (final qualifier) happening at typing-sig@
Guido van Rossum
guido at python.org
Thu Apr 18 10:44:38 EDT 2019
Yes, please add this to the PEP in the rejected ideas section, with the
motivation for rejection -- the example can show how to work around it.
On Tue, Apr 16, 2019 at 12:51 AM Michael Sullivan <sully at msully.net> wrote:
> On Mon, Apr 15, 2019 at 8:12 PM Nathaniel Smith <njs at pobox.com> wrote:
>> On Mon, Apr 15, 2019 at 5:00 PM Michael Sullivan <sully at msully.net>
>> > I've submitted PEP 591 (Adding a final qualifier to typing) for
>> discussion to typing-sig .
>> I'm not on typing-sig  so I'm replying here.
>> > Here's the abstract:
>> > This PEP proposes a "final" qualifier to be added to the ``typing``
>> > module---in the form of a ``final`` decorator and a ``Final`` type
>> > annotation---to serve three related purposes:
>> > * Declaring that a method should not be overridden
>> > * Declaring that a class should not be subclassed
>> > * Declaring that a variable or attribute should not be reassigned
>> I've been meaning to start blocking subclassing at runtime (e.g. like
>> ), so being able to express that to the typechecker seems like a
>> nice addition. I'm assuming though that the '@final' decorator doesn't
>> have any runtime effect, so I'd have to say it twice?
>> class MyClass(metaclass=othermod.Final):
>> Or on 3.6+ with __init_subclass__, it's easy to define a @final
>> decorator that works at runtime, but I guess this would have to be a
>> different decorator?
>> class MyClass:
>> This seems kinda awkward. Have you considered giving it a runtime
>> effect, or providing some way for users to combine these two things
>> together on their own?
>> Nothing else in typing does any type of runtime enforcement, so I'd be
> reluctant to start here.
> One approach would be doing something like this (maybe in a support
> if typing.TYPE_CHECKING:
> from typing import final
> from alsoruntime import final
> So that at checking time, the typechecker would use the typing final but
> at runtime we'd get something that does enforcement.
> (And for the pre-3.6 case, you could maybe use something like
> six.add_metaclass in order to specify the metaclass as a decorator.)
> I can add this as an example to the PEP.
>>  https://github.com/willingc/pep-communication/issues/1
>>  https://stackoverflow.com/a/3949004/1925449
>> Nathaniel J. Smith -- https://vorpus.org
> Python-Dev mailing list
> Python-Dev at python.org
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him/his **(why is my pronoun here?)*
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-Dev