Fix incorrect custom breakpoint indices when string group contains fake f-strings (#2311)
Fixes #2293
This commit is contained in:
parent
6380b9f2f6
commit
99b68e59ce
@ -9,6 +9,8 @@
|
||||
- Fixed option usage when using the `--code` flag (#2259)
|
||||
- Do not call `uvloop.install()` when _Black_ is used as a library (#2303)
|
||||
- Added `--required-version` option to require a specific version to be running (#2300)
|
||||
- Fix incorrect custom breakpoint indices when string group contains fake f-strings
|
||||
(#2311)
|
||||
|
||||
## 21.5b2
|
||||
|
||||
|
@ -1151,21 +1151,32 @@ def more_splits_should_be_made() -> bool:
|
||||
|
||||
# --- Construct `next_value`
|
||||
next_value = rest_value[:break_idx] + QUOTE
|
||||
|
||||
# HACK: The following 'if' statement is a hack to fix the custom
|
||||
# breakpoint index in the case of either: (a) substrings that were
|
||||
# f-strings but will have the 'f' prefix removed OR (b) substrings
|
||||
# that were not f-strings but will now become f-strings because of
|
||||
# redundant use of the 'f' prefix (i.e. none of the substrings
|
||||
# contain f-expressions but one or more of them had the 'f' prefix
|
||||
# anyway; in which case, we will prepend 'f' to _all_ substrings).
|
||||
#
|
||||
# There is probably a better way to accomplish what is being done
|
||||
# here...
|
||||
#
|
||||
# If this substring is an f-string, we _could_ remove the 'f'
|
||||
# prefix, and the current custom split did NOT originally use a
|
||||
# prefix...
|
||||
if (
|
||||
# Are we allowed to try to drop a pointless 'f' prefix?
|
||||
drop_pointless_f_prefix
|
||||
# If we are, will we be successful?
|
||||
and next_value != self._normalize_f_string(next_value, prefix)
|
||||
next_value != self._normalize_f_string(next_value, prefix)
|
||||
and use_custom_breakpoints
|
||||
and not csplit.has_prefix
|
||||
):
|
||||
# If the current custom split did NOT originally use a prefix,
|
||||
# then `csplit.break_idx` will be off by one after removing
|
||||
# Then `csplit.break_idx` will be off by one after removing
|
||||
# the 'f' prefix.
|
||||
break_idx = (
|
||||
break_idx + 1
|
||||
if use_custom_breakpoints and not csplit.has_prefix
|
||||
else break_idx
|
||||
)
|
||||
break_idx += 1
|
||||
next_value = rest_value[:break_idx] + QUOTE
|
||||
|
||||
if drop_pointless_f_prefix:
|
||||
next_value = self._normalize_f_string(next_value, prefix)
|
||||
|
||||
# --- Construct `next_leaf`
|
||||
|
@ -455,6 +455,45 @@ async def foo(self):
|
||||
)
|
||||
assert str(suffix_arr) in "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', 'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', 'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
|
||||
assert str(suffix_arr) not in "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', 'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', 'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
|
||||
message = (
|
||||
f"1. Go to Google Developers Console and log in with your Google account."
|
||||
"(https://console.developers.google.com/)"
|
||||
"2. You should be prompted to create a new project (name does not matter)."
|
||||
"3. Click on Enable APIs and Services at the top."
|
||||
"4. In the list of APIs choose or search for YouTube Data API v3 and "
|
||||
"click on it. Choose Enable."
|
||||
"5. Click on Credentials on the left navigation bar."
|
||||
"6. Click on Create Credential at the top."
|
||||
'7. At the top click the link for "API key".'
|
||||
"8. No application restrictions are needed. Click Create at the bottom."
|
||||
"9. You now have a key to add to `{prefix}set api youtube api_key`"
|
||||
)
|
||||
message = (
|
||||
f"1. Go to Google Developers Console and log in with your Google account."
|
||||
"(https://console.developers.google.com/)"
|
||||
"2. You should be prompted to create a new project (name does not matter)."
|
||||
f"3. Click on Enable APIs and Services at the top."
|
||||
"4. In the list of APIs choose or search for YouTube Data API v3 and "
|
||||
"click on it. Choose Enable."
|
||||
f"5. Click on Credentials on the left navigation bar."
|
||||
"6. Click on Create Credential at the top."
|
||||
'7. At the top click the link for "API key".'
|
||||
"8. No application restrictions are needed. Click Create at the bottom."
|
||||
"9. You now have a key to add to `{prefix}set api youtube api_key`"
|
||||
)
|
||||
message = (
|
||||
f"1. Go to Google Developers Console and log in with your Google account."
|
||||
"(https://console.developers.google.com/)"
|
||||
"2. You should be prompted to create a new project (name does not matter)."
|
||||
f"3. Click on Enable APIs and Services at the top."
|
||||
"4. In the list of APIs choose or search for YouTube Data API v3 and "
|
||||
"click on it. Choose Enable."
|
||||
f"5. Click on Credentials on the left navigation bar."
|
||||
"6. Click on Create Credential at the top."
|
||||
'7. At the top click the link for "API key".'
|
||||
"8. No application restrictions are needed. Click Create at the bottom."
|
||||
f"9. You now have a key to add to `{prefix}set api youtube api_key`"
|
||||
)
|
||||
|
||||
# output
|
||||
|
||||
@ -1022,3 +1061,42 @@ async def foo(self):
|
||||
" 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', 'o$', 'oo$', 'roo$',"
|
||||
" 'rykangaroo$', 'ykangaroo$']"
|
||||
)
|
||||
message = (
|
||||
f"1. Go to Google Developers Console and log in with your Google account."
|
||||
f"(https://console.developers.google.com/)"
|
||||
f"2. You should be prompted to create a new project (name does not matter)."
|
||||
f"3. Click on Enable APIs and Services at the top."
|
||||
f"4. In the list of APIs choose or search for YouTube Data API v3 and "
|
||||
f"click on it. Choose Enable."
|
||||
f"5. Click on Credentials on the left navigation bar."
|
||||
f"6. Click on Create Credential at the top."
|
||||
f'7. At the top click the link for "API key".'
|
||||
f"8. No application restrictions are needed. Click Create at the bottom."
|
||||
f"9. You now have a key to add to `{{prefix}}set api youtube api_key`"
|
||||
)
|
||||
message = (
|
||||
f"1. Go to Google Developers Console and log in with your Google account."
|
||||
f"(https://console.developers.google.com/)"
|
||||
f"2. You should be prompted to create a new project (name does not matter)."
|
||||
f"3. Click on Enable APIs and Services at the top."
|
||||
f"4. In the list of APIs choose or search for YouTube Data API v3 and "
|
||||
f"click on it. Choose Enable."
|
||||
f"5. Click on Credentials on the left navigation bar."
|
||||
f"6. Click on Create Credential at the top."
|
||||
f'7. At the top click the link for "API key".'
|
||||
f"8. No application restrictions are needed. Click Create at the bottom."
|
||||
f"9. You now have a key to add to `{{prefix}}set api youtube api_key`"
|
||||
)
|
||||
message = (
|
||||
"1. Go to Google Developers Console and log in with your Google account."
|
||||
"(https://console.developers.google.com/)"
|
||||
"2. You should be prompted to create a new project (name does not matter)."
|
||||
"3. Click on Enable APIs and Services at the top."
|
||||
"4. In the list of APIs choose or search for YouTube Data API v3 and "
|
||||
"click on it. Choose Enable."
|
||||
"5. Click on Credentials on the left navigation bar."
|
||||
"6. Click on Create Credential at the top."
|
||||
'7. At the top click the link for "API key".'
|
||||
"8. No application restrictions are needed. Click Create at the bottom."
|
||||
f"9. You now have a key to add to `{prefix}set api youtube api_key`"
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user