Skip to content

Commit 4d6d179

Browse files
author
MomIsBestFriend
committed
Refactored the code to use a generator
1 parent bfad571 commit 4d6d179

File tree

2 files changed

+29
-31
lines changed

2 files changed

+29
-31
lines changed

ci/code_checks.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ if [[ -z "$CHECK" || "$CHECK" == "patterns" ]]; then
217217
RET=$(($RET + $?)) ; echo $MSG "DONE"
218218

219219
MSG='Check for use of not concatenated strings' ; echo $MSG
220-
python $BASE_DIR/scripts/validate_string_concatenation.py pandas
220+
$BASE_DIR/scripts/validate_string_concatenation.py pandas
221221
RET=$(($RET + $?)) ; echo $MSG "DONE"
222222

223223
MSG='Check that no file in the repo contains trailing whitespaces' ; echo $MSG

scripts/validate_string_concatenation.py

+28-30
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@
1212
... "baz"
1313
... )
1414
15+
1516
into this:
1617
1718
>>> foo = ("bar " "baz")
1819
1920
Black is not considering this as an
20-
issue (see https://github.com/psf/black/issues/1051), so we are checking
21-
it here.
21+
issue (see issue https://github.com/psf/black/issues/1051),
22+
so we are checking it here.
2223
"""
2324

2425
import os
@@ -30,38 +31,31 @@
3031
FILE_EXTENSIONS_TO_CHECK = frozenset((".pxd", ".py", ".pyx", ".pyx.ini"))
3132

3233

33-
def is_concatenated(file_path):
34+
def strings_to_concatenate(file_path):
3435
"""
35-
Checking if the file containing strings that needs to be concatenated.
36+
Yielding the strings that needs to be concatenated in a given file.
3637
3738
Parameters
3839
----------
3940
file_path : str
4041
File path pointing to a single file.
4142
42-
Returns
43-
-------
44-
int
45-
Status code representing if the file needs a fix.
46-
0 - All good.
47-
1 - Needs to be fixed.
43+
Yields
44+
------
45+
str
46+
Message containing info about the string that needs to be concatenated.
4847
"""
49-
need_fix = False
5048
with open(file_path, "r") as file_name:
5149
tokens = list(tokenize.generate_tokens(file_name.readline))
52-
for current_token, next_token in zip(tokens, tokens[1:]):
53-
if current_token[0] == next_token[0] == token.STRING:
54-
need_fix = True
55-
print(
56-
"{file_path}:{line_number}:\t{start} and {end}".format(
57-
file_path=file_path,
58-
line_number=current_token[2][0],
59-
start=current_token[1],
60-
end=next_token[1],
61-
)
62-
)
6350

64-
return int(need_fix)
51+
for current_token, next_token in zip(tokens, tokens[1:]):
52+
if current_token[0] == next_token[0] == token.STRING:
53+
yield "{file_path}:{line_number}:\t{start} and {end}\n".format(
54+
file_path=file_path,
55+
line_number=current_token[2][0],
56+
start=current_token[1],
57+
end=next_token[1],
58+
)
6559

6660

6761
if __name__ == "__main__":
@@ -70,19 +64,23 @@ def is_concatenated(file_path):
7064
if not os.path.exists(path):
7165
raise ValueError("Please enter a valid path, to a file/directory.")
7266

67+
failed = False
68+
7369
if os.path.isfile(path):
74-
# Means that the given path is of a single file.
75-
sys.exit(is_concatenated(path))
70+
for msg in strings_to_concatenate(path):
71+
if msg:
72+
failed = True
73+
print(msg)
7674

77-
failures = 0
78-
# Means that the given path is of a directory.
7975
for subdir, _, files in os.walk(path):
8076
for file_name in files:
8177
if any(
8278
file_name.endswith(extension) for extension in FILE_EXTENSIONS_TO_CHECK
8379
):
8480
file_extension = os.path.join(subdir, file_name)
85-
failures += is_concatenated(os.path.join(subdir, file_name))
8681

87-
exit_code = 1 if failures >= 1 else 0
88-
sys.exit(exit_code)
82+
for msg in strings_to_concatenate(os.path.join(subdir, file_name)):
83+
if msg:
84+
failed = True
85+
print(msg)
86+
sys.exit(failed)

0 commit comments

Comments
 (0)