![](https://secure.gravatar.com/avatar/fbaf18466800209b8627683ebb2be891.jpg?s=120&d=mm&r=g)
Hi all, decorators are a very powerful feature in python, but it's syntax is strangely restrictive. decorator ::= "@" dotted_name ["(" [argument_list [","]] ")"] NEWLINE for 99% of cases this is not a hindrance, but sometimes we'd rather be able to use full expression syntax. consider the following example (using PyQt): # make 10 buttons buttons = [QPushButton(f'button #{i}') for i in range(10)] # for now we only want to bind an event to the first button @buttons[0].clicked.connect def foo(): ... # do whatever in cases such as this, it would be useful to have any expression acceptable as a decorator. In addition to other use cases such as chained function calling (@buttons_dict.get("foo"). clicked.connect), the restrictiveness of the decorator syntax seems like a strange oversight. Arbitrary expressions are already allowed in decorator lines as arguments, so allowing them as the called decorator shouldn't be too difficult. Any thoughts on this?
![](https://secure.gravatar.com/avatar/047f2332cde3730f1ed661eebb0c5686.jpg?s=120&d=mm&r=g)
I’ve always resisted changing this, but it keeps coming up, and in other cases we don’t restrict the grammar (except when there are real ambiguities). So maybe the SC can accept a PRP for this? On Mon, Feb 3, 2020 at 15:47 Ben Avrahami <avrahami.ben@gmail.com> wrote:
-- --Guido (mobile)
![](https://secure.gravatar.com/avatar/2828041405aa313004b6549acf918228.jpg?s=120&d=mm&r=g)
On 2/4/2020 4:07 AM, Ben Avrahami wrote:
PEP-318 references https://mail.python.org/pipermail/python-dev/2004-August/046711.html. And there have been a number of other discussions about it over the years. I think mostly on python-ideas, if you want to go searching for them. Eric
![](https://secure.gravatar.com/avatar/047f2332cde3730f1ed661eebb0c5686.jpg?s=120&d=mm&r=g)
Yes, it requires a PEP -- note that I am not longer the decider, and none of the core devs will want to take responsibility for such a change of heart, so it has to go to the Steering Council. And the easiest way for that is a PEP. On Tue, Feb 4, 2020 at 02:04 Eric V. Smith <eric@trueblade.com> wrote:
-- --Guido (mobile)
![](https://secure.gravatar.com/avatar/2f030aadc9b778ceda33bad2b0141c76.jpg?s=120&d=mm&r=g)
This has struck me as unnecessarily restrictive ever since I first bumped up against it. I think that the reoccurring threads on this topic, the availability of awful (and inefficient) hacks to circumvent this restriction, and the presentation here of a legitimate use case are all solid arguments in favor of relaxing it.
So maybe the SC can accept a PRP for this?
I'd be willing to draft a PEP and accompanying implementation if there's a core dev to sponsor it.
![](https://secure.gravatar.com/avatar/047f2332cde3730f1ed661eebb0c5686.jpg?s=120&d=mm&r=g)
I'll sponsor. On Tue, Feb 4, 2020 at 9:43 AM Brandt Bucher <brandtbucher@gmail.com> wrote:
-- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-c...>
![](https://secure.gravatar.com/avatar/2f030aadc9b778ceda33bad2b0141c76.jpg?s=120&d=mm&r=g)
Great! I'll begin work on this soon and reach out to you when I have something. Thanks, Ben, for bringing this up.
![](https://secure.gravatar.com/avatar/047f2332cde3730f1ed661eebb0c5686.jpg?s=120&d=mm&r=g)
I’ve always resisted changing this, but it keeps coming up, and in other cases we don’t restrict the grammar (except when there are real ambiguities). So maybe the SC can accept a PRP for this? On Mon, Feb 3, 2020 at 15:47 Ben Avrahami <avrahami.ben@gmail.com> wrote:
-- --Guido (mobile)
![](https://secure.gravatar.com/avatar/2828041405aa313004b6549acf918228.jpg?s=120&d=mm&r=g)
On 2/4/2020 4:07 AM, Ben Avrahami wrote:
PEP-318 references https://mail.python.org/pipermail/python-dev/2004-August/046711.html. And there have been a number of other discussions about it over the years. I think mostly on python-ideas, if you want to go searching for them. Eric
![](https://secure.gravatar.com/avatar/047f2332cde3730f1ed661eebb0c5686.jpg?s=120&d=mm&r=g)
Yes, it requires a PEP -- note that I am not longer the decider, and none of the core devs will want to take responsibility for such a change of heart, so it has to go to the Steering Council. And the easiest way for that is a PEP. On Tue, Feb 4, 2020 at 02:04 Eric V. Smith <eric@trueblade.com> wrote:
-- --Guido (mobile)
![](https://secure.gravatar.com/avatar/2f030aadc9b778ceda33bad2b0141c76.jpg?s=120&d=mm&r=g)
This has struck me as unnecessarily restrictive ever since I first bumped up against it. I think that the reoccurring threads on this topic, the availability of awful (and inefficient) hacks to circumvent this restriction, and the presentation here of a legitimate use case are all solid arguments in favor of relaxing it.
So maybe the SC can accept a PRP for this?
I'd be willing to draft a PEP and accompanying implementation if there's a core dev to sponsor it.
![](https://secure.gravatar.com/avatar/047f2332cde3730f1ed661eebb0c5686.jpg?s=120&d=mm&r=g)
I'll sponsor. On Tue, Feb 4, 2020 at 9:43 AM Brandt Bucher <brandtbucher@gmail.com> wrote:
-- --Guido van Rossum (python.org/~guido) *Pronouns: he/him **(why is my pronoun here?)* <http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-c...>
![](https://secure.gravatar.com/avatar/2f030aadc9b778ceda33bad2b0141c76.jpg?s=120&d=mm&r=g)
Great! I'll begin work on this soon and reach out to you when I have something. Thanks, Ben, for bringing this up.
participants (5)
-
Ben Avrahami
-
Brandt Bucher
-
Eric V. Smith
-
Guido van Rossum
-
Soni L.