Skip to content

Commit 1eb3c14

Browse files
Fix FutureWarning: split() requires a non-empty pattern match (#485)
Fix FutureWarning: split() requires a non-empty pattern match These warnings are emitted with Python 3.6.8 (and probably other versions as well). Fixes FutureWarning: split() requires a non-empty pattern match This can be easily reproduced with the below: import sys from specfile import Specfile specfile = Specfile(sys.argv[1]) with specfile as spec: print (spec.expanded_release) Sample stacktrace: Traceback (most recent call last): File "/tmp/3.py", line 11, in <module> print (spec.expanded_release) File "/home/jesse/.local/lib/python3.6/site-packages/specfile/specfile.py", line 770, in expanded_release return self.expand(self.release, extra_macros=[("dist", "")]) File "/home/jesse/.local/lib/python3.6/site-packages/specfile/specfile.py", line 761, in release return self._split_raw_release(self.raw_release)[0] File "/home/jesse/.local/lib/python3.6/site-packages/specfile/specfile.py", line 667, in getter with self.tags() as tags: File "/home/jesse/.local/lib/python3.6/site-packages/specfile/context_management.py", line 134, in __call__ self.values[key] = next(self.generators[key]) File "/home/jesse/.local/lib/python3.6/site-packages/specfile/specfile.py", line 393, in tags tags = Tags.parse(section, context=self) File "/home/jesse/.local/lib/python3.6/site-packages/specfile/tags.py", line 514, in parse line, prefix, suffix = split_conditional_macro_expansion(line) File "/home/jesse/.local/lib/python3.6/site-packages/specfile/utils.py", line 315, in split_conditional_macro_expansion nodes = ValueParser.parse(value) File "/home/jesse/.local/lib/python3.6/site-packages/specfile/value_parser.py", line 278, in parse ConditionalMacroExpansion(condition, cls.parse(body)) File "/home/jesse/.local/lib/python3.6/site-packages/specfile/value_parser.py", line 132, in __init__ tokens = re.split(r"^([?!]*)", condition, maxsplit=1) File "/usr/lib64/python3.6/re.py", line 212, in split return _compile(pattern, flags).split(string, maxsplit) Reviewed-by: gemini-code-assist[bot] Reviewed-by: Nikola Forró
2 parents aa24be9 + 755e08f commit 1eb3c14

1 file changed

Lines changed: 5 additions & 5 deletions

File tree

specfile/value_parser.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class MacroSubstitution(Node):
7474
"""Node representing macro substitution, e.g. _%version_."""
7575

7676
def __init__(self, body: str) -> None:
77-
tokens = re.split(r"^([?!]*)", body, maxsplit=1)
77+
tokens = re.split(r"^([?!]+)", body, maxsplit=1)
7878
if len(tokens) == 1:
7979
self.prefix, self.name = "", tokens[0]
8080
else:
@@ -97,7 +97,7 @@ class EnclosedMacroSubstitution(Node):
9797
"""Node representing macro substitution enclosed in brackets, e.g. _%{?dist}_."""
9898

9999
def __init__(self, body: str) -> None:
100-
tokens = re.split(r"^([?!]*)", body, maxsplit=1)
100+
tokens = re.split(r"^([?!]+)", body, maxsplit=1)
101101
if len(tokens) == 1:
102102
self.prefix, rest = "", tokens[0]
103103
else:
@@ -129,7 +129,7 @@ class ConditionalMacroExpansion(Node):
129129
"""Node representing conditional macro expansion, e.g. _%{?prerel:0.}_."""
130130

131131
def __init__(self, condition: str, body: List[Node]) -> None:
132-
tokens = re.split(r"^([?!]*)", condition, maxsplit=1)
132+
tokens = re.split(r"^([?!]+)", condition, maxsplit=1)
133133
if len(tokens) == 1:
134134
self.prefix, self.name = "", tokens[0]
135135
else:
@@ -271,8 +271,8 @@ def find_macro_end(index):
271271
elif value[start + 1] == "{":
272272
if ":" in value[start:end]:
273273
condition, body = value[start + 2 : end - 1].split(":", maxsplit=1)
274-
tokens = re.split(r"^([?!]*)", condition, maxsplit=1)
275-
prefix = tokens[0 if len(tokens) == 1 else 1]
274+
tokens = re.split(r"^([?!]+)", condition, maxsplit=1)
275+
prefix = "" if len(tokens) == 1 else tokens[1]
276276
if "?" in prefix:
277277
result.append(
278278
ConditionalMacroExpansion(condition, cls.parse(body))

0 commit comments

Comments
 (0)