parent
f298032ddb
commit
799f76f537
@ -28,6 +28,7 @@
|
|||||||
`--target-version` is set to 3.10 and higher). (#2728)
|
`--target-version` is set to 3.10 and higher). (#2728)
|
||||||
- Fix handling of standalone `match()` or `case()` when there is a trailing newline or a
|
- Fix handling of standalone `match()` or `case()` when there is a trailing newline or a
|
||||||
comment inside of the parentheses. (#2760)
|
comment inside of the parentheses. (#2760)
|
||||||
|
- Black now normalizes string prefix order (#2297)
|
||||||
|
|
||||||
### Packaging
|
### Packaging
|
||||||
|
|
||||||
|
@ -233,10 +233,10 @@ _Black_ prefers double quotes (`"` and `"""`) over single quotes (`'` and `'''`)
|
|||||||
will replace the latter with the former as long as it does not result in more backslash
|
will replace the latter with the former as long as it does not result in more backslash
|
||||||
escapes than before.
|
escapes than before.
|
||||||
|
|
||||||
_Black_ also standardizes string prefixes, making them always lowercase. On top of that,
|
_Black_ also standardizes string prefixes. Prefix characters are made lowercase with the
|
||||||
if your code is already Python 3.6+ only or it's using the `unicode_literals` future
|
exception of [capital "R" prefixes](#rstrings-and-rstrings), unicode literal markers
|
||||||
import, _Black_ will remove `u` from the string prefix as it is meaningless in those
|
(`u`) are removed because they are meaningless in Python 3, and in the case of multiple
|
||||||
scenarios.
|
characters "r" is put first as in spoken language: "raw f-string".
|
||||||
|
|
||||||
The main reason to standardize on a single form of quotes is aesthetics. Having one kind
|
The main reason to standardize on a single form of quotes is aesthetics. Having one kind
|
||||||
of quotes everywhere reduces reader distraction. It will also enable a future version of
|
of quotes everywhere reduces reader distraction. It will also enable a future version of
|
||||||
|
@ -149,6 +149,10 @@ def normalize_string_prefix(s: str) -> str:
|
|||||||
.replace("U", "")
|
.replace("U", "")
|
||||||
.replace("u", "")
|
.replace("u", "")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Python syntax guarantees max 2 prefixes and that one of them is "r"
|
||||||
|
if len(new_prefix) == 2 and "r" != new_prefix[0].lower():
|
||||||
|
new_prefix = new_prefix[::-1]
|
||||||
return f"{new_prefix}{match.group(2)}"
|
return f"{new_prefix}{match.group(2)}"
|
||||||
|
|
||||||
|
|
||||||
|
@ -293,7 +293,7 @@ def compat(self, token: Tuple[int, Text], iterable: Iterable[TokenInfo]) -> None
|
|||||||
|
|
||||||
|
|
||||||
cookie_re = re.compile(r"^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)", re.ASCII)
|
cookie_re = re.compile(r"^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)", re.ASCII)
|
||||||
blank_re = re.compile(br"^[ \t\f]*(?:[#\r\n]|$)", re.ASCII)
|
blank_re = re.compile(rb"^[ \t\f]*(?:[#\r\n]|$)", re.ASCII)
|
||||||
|
|
||||||
|
|
||||||
def _get_normal_name(orig_enc: str) -> str:
|
def _get_normal_name(orig_enc: str) -> str:
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
#!/usr/bin/env python3.6
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
name = R"Łukasz"
|
name = "Łukasz"
|
||||||
F"hello {name}"
|
(f"hello {name}", F"hello {name}")
|
||||||
B"hello"
|
(b"", B"")
|
||||||
r"hello"
|
(u"", U"")
|
||||||
fR"hello"
|
(r"", R"")
|
||||||
|
|
||||||
|
(rf"", fr"", Rf"", fR"", rF"", Fr"", RF"", FR"")
|
||||||
|
(rb"", br"", Rb"", bR"", rB"", Br"", RB"", BR"")
|
||||||
|
|
||||||
|
|
||||||
def docstring_singleline():
|
def docstring_singleline():
|
||||||
@ -20,13 +23,16 @@ def docstring_multiline():
|
|||||||
# output
|
# output
|
||||||
|
|
||||||
|
|
||||||
#!/usr/bin/env python3.6
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
name = R"Łukasz"
|
name = "Łukasz"
|
||||||
f"hello {name}"
|
(f"hello {name}", f"hello {name}")
|
||||||
b"hello"
|
(b"", b"")
|
||||||
r"hello"
|
("", "")
|
||||||
fR"hello"
|
(r"", R"")
|
||||||
|
|
||||||
|
(rf"", rf"", Rf"", Rf"", rf"", rf"", Rf"", Rf"")
|
||||||
|
(rb"", rb"", Rb"", Rb"", rb"", rb"", Rb"", Rb"")
|
||||||
|
|
||||||
|
|
||||||
def docstring_singleline():
|
def docstring_singleline():
|
||||||
|
Loading…
Reference in New Issue
Block a user