[Python-Dev] Raw strings ending with a backslash
Now that we have a new parser for CPython, can we fix the old gotcha that raw strings cannot end in a backslash? Its an FAQ and has come up again on the bug tracker. https://docs.python.org/3/faq/design.html#id26 https://github.com/python/cpython/issues/93314 -- Steve ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/A437MSH3QO6CG2JIZHDTEDVUZZ2TCRYI/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
28.05.22 12:22, Steven D'Aprano пише: Now that we have a new parser for CPython, can we fix the old gotcha that raw strings cannot end in a backslash? Its an FAQ and has come up again on the bug tracker. https://docs.python.org/3/faq/design.html#id26 https://github.com/python/cpython/issues/93314 I do not think that we can allow this, and it is not related to parser. Few years ago I experimented with such change: https://github.com/python/cpython/pull/15217 You can see that it breaks even some stdlib code, and it will definitely break many third-party packages and examples. Technically we can do this, but the benefit is small in comparison with the cost. ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/WWWRFQK4AG52GD3L6WT6QLRGTY2VQRQ2/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
That PR seems to make \' and \" not special in general right? I think this is a more limited proposal, to only change the behavior when \ is at the end of a string, so the only behavior difference would never receiving the error "SyntaxError: EOL while scanning string literal" In which case there should be no backwards compatibility issue. Damian On Sat, May 28, 2022 at 12:20 PM Serhiy Storchaka wrote: > 28.05.22 12:22, Steven D'Aprano пише: > > Now that we have a new parser for CPython, can we fix the old gotcha > > that raw strings cannot end in a backslash? > > > > Its an FAQ and has come up again on the bug tracker. > > > > https://docs.python.org/3/faq/design.html#id26 > > > > https://github.com/python/cpython/issues/93314 > > I do not think that we can allow this, and it is not related to parser. > > Few years ago I experimented with such change: > https://github.com/python/cpython/pull/15217 > > You can see that it breaks even some stdlib code, and it will definitely > break many third-party packages and examples. Technically we can do > this, but the benefit is small in comparison with the cost. > > ___ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/WWWRFQK4AG52GD3L6WT6QLRGTY2VQRQ2/ > Code of Conduct: http://python.org/psf/codeofconduct/ > ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/O3STZ54BRQ3T352PIMNEZWCRBGP6FE2O/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
Personally I'd expect these two lines to do the same thing, whatever that thing is: path = 'C:\' path = ('C:\') Barney On Sat, 28 May 2022 at 12:59, Damian Shaw wrote: > That PR seems to make \' and \" not special in general right? > > I think this is a more limited proposal, to only change the behavior when > \ is at the end of a string, so the only behavior difference would never > receiving the error "SyntaxError: EOL while scanning string literal" > > In which case there should be no backwards compatibility issue. > > Damian > > On Sat, May 28, 2022 at 12:20 PM Serhiy Storchaka > wrote: > >> 28.05.22 12:22, Steven D'Aprano пише: >> > Now that we have a new parser for CPython, can we fix the old gotcha >> > that raw strings cannot end in a backslash? >> > >> > Its an FAQ and has come up again on the bug tracker. >> > >> > https://docs.python.org/3/faq/design.html#id26 >> > >> > https://github.com/python/cpython/issues/93314 >> >> I do not think that we can allow this, and it is not related to parser. >> >> Few years ago I experimented with such change: >> https://github.com/python/cpython/pull/15217 >> >> You can see that it breaks even some stdlib code, and it will definitely >> break many third-party packages and examples. Technically we can do >> this, but the benefit is small in comparison with the cost. >> >> ___ >> Python-Dev mailing list -- python-dev@python.org >> To unsubscribe send an email to python-dev-le...@python.org >> https://mail.python.org/mailman3/lists/python-dev.python.org/ >> Message archived at >> https://mail.python.org/archives/list/python-dev@python.org/message/WWWRFQK4AG52GD3L6WT6QLRGTY2VQRQ2/ >> Code of Conduct: http://python.org/psf/codeofconduct/ >> > ___ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/O3STZ54BRQ3T352PIMNEZWCRBGP6FE2O/ > Code of Conduct: http://python.org/psf/codeofconduct/ > ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/JWB74TLU5MKSYKCEW52AYYA7MHI2EENU/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
28.05.22 14:57, Damian Shaw пише: That PR seems to make \' and \" not special in general right? I think this is a more limited proposal, to only change the behavior when \ is at the end of a string, so the only behavior difference would never receiving the error "SyntaxError: EOL while scanning string literal" In which case there should be no backwards compatibility issue. How do you know that it is at the end of a string? ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/BFGT3H57CFTEOKWA3NXBSPUDE4JF4C2H/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
On 5/28/2022 7:57 AM, Damian Shaw wrote: That PR seems to make \' and \" not special in general right? I think this is a more limited proposal, to only change the behavior when \ is at the end of a string, so the only behavior difference would never receiving the error "SyntaxError: EOL while scanning string literal" How would you know where the end of a string is? I think this is one of those things that's easy to look at for a human and figure out the intent, but not so easy for the lexer, without some heuristics and backtracking. If the trailing single quote is removed below, it changes from "backslash in the middle of a string" to "backslash at the end of a string, followed by an arbitrary expression. r'\' + "foo"' Eric In which case there should be no backwards compatibility issue. Damian On Sat, May 28, 2022 at 12:20 PM Serhiy Storchaka wrote: 28.05.22 12:22, Steven D'Aprano пише: > Now that we have a new parser for CPython, can we fix the old gotcha > that raw strings cannot end in a backslash? > > Its an FAQ and has come up again on the bug tracker. > > https://docs.python.org/3/faq/design.html#id26 > > https://github.com/python/cpython/issues/93314 I do not think that we can allow this, and it is not related to parser. Few years ago I experimented with such change: https://github.com/python/cpython/pull/15217 You can see that it breaks even some stdlib code, and it will definitely break many third-party packages and examples. Technically we can do this, but the benefit is small in comparison with the cost. ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/WWWRFQK4AG52GD3L6WT6QLRGTY2VQRQ2/ Code of Conduct: http://python.org/psf/codeofconduct/ ___ Python-Dev mailing list --python-dev@python.org To unsubscribe send an email topython-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived athttps://mail.python.org/archives/list/python-dev@python.org/message/O3STZ54BRQ3T352PIMNEZWCRBGP6FE2O/ Code of Conduct:http://python.org/psf/codeofconduct/___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/AMEE5VX5UB3KESBDJ47SUIFLHMEAZAGK/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
My understanding was that was part of the question being asked, is it possible to know what with the new PEG parser? On Sat, May 28, 2022 at 1:25 PM Serhiy Storchaka wrote: > 28.05.22 14:57, Damian Shaw пише: > > That PR seems to make \' and \" not special in general right? > > > > I think this is a more limited proposal, to only change the behavior > > when \ is at the end of a string, so the only behavior difference would > > never receiving the error "SyntaxError: EOL while scanning string > literal" > > > > In which case there should be no backwards compatibility issue. > > How do you know that it is at the end of a string? > > ___ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/BFGT3H57CFTEOKWA3NXBSPUDE4JF4C2H/ > Code of Conduct: http://python.org/psf/codeofconduct/ > ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/4QGGU7GJ3K4TGZFF2X4DPDZVDEMVJECD/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
On 2022-05-28 13:17, Serhiy Storchaka wrote: 28.05.22 14:57, Damian Shaw пише: That PR seems to make \' and \" not special in general right? I think this is a more limited proposal, to only change the behavior when \ is at the end of a string, so the only behavior difference would never receiving the error "SyntaxError: EOL while scanning string literal" In which case there should be no backwards compatibility issue. How do you know that it is at the end of a string? It would also affect triple-quoted strings. Here's an idea: prefix rr ("really raw") that would treat all backslashes literally. ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/5U27KKDGHTGOWNXNCMNKZSSPZXD62RQ7/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: Raw strings ending with a backslash
28.05.22 18:03, Damian Shaw пише: My understanding was that was part of the question being asked, is it possible to know what with the new PEG parser? You first need to define what is the end of a string. And I think it is not relevant to the grammar parser. ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/I5FLGQ3KVDXVITFTW6LO2KADODKTGZ5O/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: [OT] Re: Raw strings ending with a backslash
On 2022-05-28 16:03, MRAB wrote: On 2022-05-28 13:17, Serhiy Storchaka wrote: 28.05.22 14:57, Damian Shaw пише: That PR seems to make \' and \" not special in general right? I think this is a more limited proposal, to only change the behavior when \ is at the end of a string, so the only behavior difference would never receiving the error "SyntaxError: EOL while scanning string literal" In which case there should be no backwards compatibility issue. How do you know that it is at the end of a string? It would also affect triple-quoted strings. Here's an idea: prefix rr ("really raw") that would treat all backslashes literally. Here's something I've just realised. Names in Python are case-sensitive, yet the string prefixes are case-/insensitive/. Why? ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/3FZJWRIZQQDNMJYJ2SOZFW3R7NVHKNC4/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: [OT] Re: Raw strings ending with a backslash
On Sun, 29 May 2022 at 05:05, MRAB wrote: > > On 2022-05-28 16:03, MRAB wrote: > > On 2022-05-28 13:17, Serhiy Storchaka wrote: > >> 28.05.22 14:57, Damian Shaw пише: > >>> That PR seems to make \' and \" not special in general right? > >>> > >>> I think this is a more limited proposal, to only change the behavior > >>> when \ is at the end of a string, so the only behavior difference would > >>> never receiving the error "SyntaxError: EOL while scanning string literal" > >>> > >>> In which case there should be no backwards compatibility issue. > >> > >> How do you know that it is at the end of a string? > >> > > It would also affect triple-quoted strings. > > > > Here's an idea: prefix rr ("really raw") that would treat all > > backslashes literally. > > Here's something I've just realised. > > Names in Python are case-sensitive, yet the string prefixes are > case-/insensitive/. > > Why? Technically they're not, but there are aliases. Kinda like threading.currentThread(). ChrisA ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/7PCCF24SSFJQKPA46PGF52XTROQM3QYT/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: [OT] Re: Raw strings ending with a backslash
On Sat, May 28, 2022 at 12:11 MRAB Names in Python are case-sensitive, yet the string prefixes are > case-/insensitive/. > > Why? IIRC we copied this from C for numeric suffixes (0l and 0L are the same; also hex digits and presumably 0XA == 0xa) and then copied that for string prefixes without thinking about it much. I guess it’s too late to change. —Guido -- --Guido (mobile) ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/27HLMPDURSAN2YCTFWN6LETWQNY4POX7/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: [OT] Re: Raw strings ending with a backslash
On Sat, May 28, 2022 at 12:55 PM Guido van Rossum wrote: > > On Sat, May 28, 2022 at 12:11 MRAB > > Names in Python are case-sensitive, yet the string prefixes are >> case-/insensitive/. >> >> Why? > > > IIRC we copied this from C for numeric suffixes (0l and 0L are the same; > also hex digits and presumably 0XA == 0xa) and then copied that for string > prefixes without thinking about it much. I guess it’s too late to change. > Given that 99.99% of code uses lower case string prefixes we *could* change it, it'd just take a longer deprecation cycle - you'd probably want a few releases where the upper case prefixes become an error in files without a `from __future__ import case_sensitive_quote_prefixes` rather than jumping straight from parse time DeprecationWarning to repurposing the uppercase to have a new meaning. The inertia behind doing that over the course of 5+ years is high. Implying that we'd need a compelling reason to orchestrate it. None has sprung up. -gps > —Guido > -- > --Guido (mobile) > ___ > Python-Dev mailing list -- python-dev@python.org > To unsubscribe send an email to python-dev-le...@python.org > https://mail.python.org/mailman3/lists/python-dev.python.org/ > Message archived at > https://mail.python.org/archives/list/python-dev@python.org/message/27HLMPDURSAN2YCTFWN6LETWQNY4POX7/ > Code of Conduct: http://python.org/psf/codeofconduct/ > ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/CCK3UGMOBQKHP5R25UX777EFZCQQE5CL/ Code of Conduct: http://python.org/psf/codeofconduct/
[Python-Dev] Re: [OT] Re: Raw strings ending with a backslash
Trying again after I was mysteriously moderated. Thanks Ethan for fixing that. On Sat, May 28, 2022 at 6:59 PM Jonathan Goble wrote: > On Sat, May 28, 2022, 4:25 PM Gregory P. Smith wrote: > >> >> On Sat, May 28, 2022 at 12:55 PM Guido van Rossum >> wrote: >> >>> >>> On Sat, May 28, 2022 at 12:11 MRAB >>> >>> Names in Python are case-sensitive, yet the string prefixes are case-/insensitive/. Why? >>> >>> >>> IIRC we copied this from C for numeric suffixes (0l and 0L are the >>> same; also hex digits and presumably 0XA == 0xa) and then copied that for >>> string prefixes without thinking about it much. I guess it’s too late to >>> change. >>> >> >> Given that 99.99% of code uses lower case string prefixes we *could* >> change it, it'd just take a longer deprecation cycle - you'd probably want >> a few releases where the upper case prefixes become an error in files >> without a `from __future__ import case_sensitive_quote_prefixes` rather >> than jumping straight from parse time DeprecationWarning to repurposing the >> uppercase to have a new meaning. The inertia behind doing that over the >> course of 5+ years is high. Implying that we'd need a compelling reason to >> orchestrate it. None has sprung up. >> > > There already is a semantic meaning in one case, though not in Python > proper. Some syntax highlighters, including the one used in VSCode, treat r > and R differently: the former is syntax highlighted as a regex and the > latter is syntax highlighted as an generic string. I have seen > project-specific style guides advising to use r/R accordingly. > > So there is meaningful use of capital R in real-world code, and any future > change to require lowercase would need to at least consider the impact on > that use case. > >> ___ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/OVYSKRJ2URA6AWV6QW7I77SVNR6ZNFOY/ Code of Conduct: http://python.org/psf/codeofconduct/