On Mon, Aug 17, 2020 at 5:02 PM Marco Sulla <Marco.Sulla.Python@gmail.com> wrote:
On Mon, 17 Aug 2020 at 11:17, Steven D'Aprano <steve@pearwood.info> wrote:
> Did you have a specific question to be answered or are you just hoping
> to get people interested in the proposal?

It seems I have to repost the proposal I already wrote...

My proposal is to add a way for third party modules to add custom

You can already do something like this, using either an import hook or a custom encoding.
Perhaps I should repost a link that I already included in an earlier, but rather terse, reply  on this thread, about the specific "constant" example.

You will find various examples of adding custom keywords.

(more below)


from mykeywords import @const
@const a = 1

Notice that I choose "@" but I hope another non c-alphanumeric
character will be chosen.

On Mon, 17 Aug 2020 at 12:46, Chris Angelico <rosuav@gmail.com> wrote:
> A proposal that requires syntactic changes [...]

No syntactic changes are needed. Custom keywords *must* be prefixed
with a non-alphanumeric character (@ for example).

Syntactic changes would be needed.  The way that your example would be normally processed by Python
is as follows:
First, the entire content of the file would be read, and broken up into tokens (individual words and symbols).
Next, these tokens would be interpreted according to Python's grammar: your notation would raise a SyntaxError.
This would stop the entire process.

To actually do the import "from mykeywords import ...", one needs to go beyond the parsing stage.
This is where a custom encoding or an import hook can help, by transforming the source into valid Python code
before it is parsed.  More information available at the link given above.

André Roberge


Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@python.org
Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/NUAHVSON3HTHNEZ7GBCI3R6XE4RSSSZP/
Code of Conduct: http://python.org/psf/codeofconduct/