[Python-Dev] PEP 318: Suggest we drop it (original) (raw)

Brett C. bac at OCF.Berkeley.EDU
Thu Aug 19 00:26:12 CEST 2004


Kevin J. Butler wrote:

- There is no universally liked syntax (or even a universally tolerable syntax)

Yeah, but this happens every time a new syntax is proposed.

- decorators will incosistently retain or drop docstrings (this may even be the most appropriate thing to do)

No one ever said decorators were for newbies. There are multiple things to take into consideration when designing them.

- a "decorated" function may have an arbitrarily distant relationship with the function as implemented in the def statement (this is a killer)

Why? The decorator is listed before you even reach the def statement so you know how its semantics will change.

- if you want to decorate a single function two separate ways, you're back to 2.3 syntax - say, one that logs, checks parameters, etc., and the "internal" optimal version. None of the decorator syntaxes facilitate this.

Yeah, but hardly any of the other suggestions do either. And I don't think this 'one function, two separate decorators' will be common enough to warrant requiring it for the syntax.

Because of all these issues, I think we should drop PEP 318.

I disagree. I honestly think a bunch of people jumped the gun on this. Initially I wasn't crazy about the syntax either, but then I rewrote one of the test cases for test_decorators and I completely changed my mind. While I am not saying even the majority of people would change their mind if they used the syntax I do think a decent chunk of people would.

And I think people need to realize that there is precedent for having this syntactically supported. Both Java and C#, while not my favorite languages, both have something like this. It would suggest that there is something to this if two separate language teams came up with supporting this all while we had our own non-syntactic support.

The 2.3 form seems more reasonable all the time:

Then use it and not the new syntax. This is not meant to come off as snippy, but part of the cool thing about all of this is you can still use the 2.2 style (I am going all the way back to the first version that supported descriptors and thus introduced this whole idea of decorators).

After all of this, I think it is time to stop arguing over new syntax here or suggesting we drop it. Not enough people don't want the feature to convince Guido to drop it. Right now people should be hashing things out on c.l.py to get down to one alternative to propose to Guido (which I think is rather nice of him since he doesn't have to listen to anybody on any of this). Everything else has just turned into white noise at this point.

And this is my final email on alternative decorators until that single alternative for Guido comes forth since that is the only acceptable next step.

-Brett



More information about the Python-Dev mailing list