Trying again after I was mysteriously moderated. Thanks Ethan for fixing that.

On Sat, May 28, 2022 at 6:59 PM Jonathan Goble <jcgoble3@gmail.com> wrote:
On Sat, May 28, 2022, 4:25 PM Gregory P. Smith <greg@krypto.org> wrote:

On Sat, May 28, 2022 at 12:55 PM Guido van Rossum <guido@python.org> 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.