Fix backslash replacement issue
This commit is contained in:
@@ -76,7 +76,13 @@ def format_safe(template: str, **kwargs: Any) -> str:
|
|||||||
re.VERBOSE,
|
re.VERBOSE,
|
||||||
)
|
)
|
||||||
|
|
||||||
result = re.sub(find_pattern, str(value), result)
|
# we use a lambda for repl to prevent re.sub interpreting backslashes
|
||||||
|
# in repl as escape sequences
|
||||||
|
result = re.sub(
|
||||||
|
pattern=find_pattern,
|
||||||
|
repl=lambda _: str(value),
|
||||||
|
string=result,
|
||||||
|
)
|
||||||
|
|
||||||
# transform escaped sequences into their literal equivalents
|
# transform escaped sequences into their literal equivalents
|
||||||
result = result.replace(f"\\{{{key}}}", f"{{{key}}}")
|
result = result.replace(f"\\{{{key}}}", f"{{{key}}}")
|
||||||
|
|||||||
@@ -29,6 +29,14 @@ def test_prepare_command():
|
|||||||
== "python -m {something.abc[4]:3f}"
|
== "python -m {something.abc[4]:3f}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# test backslashes in the replacement
|
||||||
|
assert (
|
||||||
|
prepare_command(
|
||||||
|
"command {wheel} \\Users\\Temp\\output_dir", wheel="\\Temporary Files\\cibw"
|
||||||
|
)
|
||||||
|
== "command \\Temporary Files\\cibw \\Users\\Temp\\output_dir"
|
||||||
|
)
|
||||||
|
|
||||||
# test some unusual syntax that used to trip up the str.format approach
|
# test some unusual syntax that used to trip up the str.format approach
|
||||||
assert (
|
assert (
|
||||||
prepare_command("{a}{a,b}{b:.2e}{c}{d%s}{e:3}{f[0]}", a="42", b="3.14159")
|
prepare_command("{a}{a,b}{b:.2e}{c}{d%s}{e:3}{f[0]}", a="42", b="3.14159")
|
||||||
|
|||||||
Reference in New Issue
Block a user