Skip to content

Commit

Permalink
Enable ruff SIM102 rule
Browse files Browse the repository at this point in the history
  • Loading branch information
MaximSmolskiy committed Apr 1, 2024
1 parent f8a9489 commit 868f619
Show file tree
Hide file tree
Showing 13 changed files with 34 additions and 48 deletions.
5 changes: 2 additions & 3 deletions data_structures/arrays/sudoku_solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,8 @@ def eliminate(values, s, d):
dplaces = [s for s in u if d in values[s]]
if len(dplaces) == 0:
return False ## Contradiction: no place for this value
elif len(dplaces) == 1:
# d can only be in one place in unit; assign it there
if not assign(values, dplaces[0], d):
# d can only be in one place in unit; assign it there
elif len(dplaces) == 1 and not assign(values, dplaces[0], d):
return False
return values

Expand Down
5 changes: 2 additions & 3 deletions data_structures/stacks/balanced_parentheses.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@ def balanced_parentheses(parentheses: str) -> bool:
for bracket in parentheses:
if bracket in bracket_pairs:
stack.push(bracket)
elif bracket in (")", "]", "}"):
if stack.is_empty() or bracket_pairs[stack.pop()] != bracket:
return False
elif bracket in (")", "]", "}") and stack.is_empty() or bracket_pairs[stack.pop()] != bracket:
return False
return stack.is_empty()


Expand Down
13 changes: 6 additions & 7 deletions graphs/a_star.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,12 @@ def search(
for i in range(len(DIRECTIONS)): # to try out different valid actions
x2 = x + DIRECTIONS[i][0]
y2 = y + DIRECTIONS[i][1]
if x2 >= 0 and x2 < len(grid) and y2 >= 0 and y2 < len(grid[0]):
if closed[x2][y2] == 0 and grid[x2][y2] == 0:
g2 = g + cost
f2 = g2 + heuristic[x2][y2]
cell.append([f2, g2, x2, y2])
closed[x2][y2] = 1
action[x2][y2] = i
if x2 >= 0 and x2 < len(grid) and y2 >= 0 and y2 < len(grid[0]) and closed[x2][y2] == 0 and grid[x2][y2] == 0:
g2 = g + cost
f2 = g2 + heuristic[x2][y2]
cell.append([f2, g2, x2, y2])
closed[x2][y2] = 1
action[x2][y2] = i
invpath = []
x = goal[0]
y = goal[1]
Expand Down
5 changes: 2 additions & 3 deletions graphs/bi_directional_dijkstra.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,8 @@ def pass_and_relaxation(
queue.put((new_cost_f, nxt))
cst_fwd[nxt] = new_cost_f
parent[nxt] = v
if nxt in visited_backward:
if cst_fwd[v] + d + cst_bwd[nxt] < shortest_distance:
shortest_distance = cst_fwd[v] + d + cst_bwd[nxt]
if nxt in visited_backward and cst_fwd[v] + d + cst_bwd[nxt] < shortest_distance:
shortest_distance = cst_fwd[v] + d + cst_bwd[nxt]
return shortest_distance


Expand Down
7 changes: 3 additions & 4 deletions other/davis_putnam_logemann_loveland.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,9 @@ def assign(self, model: dict[str, bool | None]) -> None:
value = model[symbol]
else:
continue
if value is not None:
# Complement assignment if literal is in complemented form
if literal.endswith("'"):
value = not value
# Complement assignment if literal is in complemented form
if value is not None and literal.endswith("'"):
value = not value
self.literals[literal] = value

def evaluate(self, model: dict[str, bool | None]) -> bool | None:
Expand Down
5 changes: 2 additions & 3 deletions project_euler/problem_033/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,8 @@ def fraction_list(digit_len: int) -> list[str]:
last_digit = int("1" + "0" * digit_len)
for num in range(den, last_digit):
while den <= 99:
if (num != den) and (num % 10 == den // 10) and (den % 10 != 0):
if is_digit_cancelling(num, den):
solutions.append(f"{num}/{den}")
if (num != den) and (num % 10 == den // 10) and (den % 10 != 0) and is_digit_cancelling(num, den):
solutions.append(f"{num}/{den}")
den += 1
num += 1
den = 10
Expand Down
3 changes: 1 addition & 2 deletions project_euler/problem_037/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,7 @@ def validate(n: int) -> bool:
>>> validate(3797)
True
"""
if len(str(n)) > 3:
if not is_prime(int(str(n)[-3:])) or not is_prime(int(str(n)[:3])):
if len(str(n)) > 3 and (not is_prime(int(str(n)[-3:])) or not is_prime(int(str(n)[:3]))):
return False
return True

Expand Down
7 changes: 3 additions & 4 deletions project_euler/problem_107/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,9 @@ def prims_algorithm(self) -> Graph:
while len(subgraph.vertices) < len(self.vertices):
min_weight = max(self.edges.values()) + 1
for edge, weight in self.edges.items():
if (edge[0] in subgraph.vertices) ^ (edge[1] in subgraph.vertices):
if weight < min_weight:
min_edge = edge
min_weight = weight
if (edge[0] in subgraph.vertices) ^ (edge[1] in subgraph.vertices) and weight < min_weight:
min_edge = edge
min_weight = weight

subgraph.add_edge(min_edge, min_weight)

Expand Down
5 changes: 2 additions & 3 deletions project_euler/problem_207/sol1.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,8 @@ def solution(max_proportion: float = 1 / 12345) -> int:
total_partitions += 1
if check_partition_perfect(partition_candidate):
perfect_partitions += 1
if perfect_partitions > 0:
if perfect_partitions / total_partitions < max_proportion:
return int(partition_candidate)
if perfect_partitions > 0 and perfect_partitions / total_partitions < max_proportion:
return int(partition_candidate)
integer += 1


Expand Down
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ lint.ignore = [ # `ruff rule S101` for a description of that rule
"S105", # Possible hardcoded password: 'password'
"S113", # Probable use of requests call without timeout -- FIX ME
"S311", # Standard pseudo-random generators are not suitable for cryptographic purposes -- FIX ME
"SIM102", # Use a single `if` statement instead of nested `if` statements -- FIX ME
"SLF001", # Private member accessed: `_Iterator` -- FIX ME
"UP038", # Use `X | Y` in `{}` call instead of `(X, Y)` -- DO NOT FIX
]
Expand Down
9 changes: 4 additions & 5 deletions scheduling/shortest_job_first.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,10 @@ def calculate_waitingtime(
# Process until all processes are completed
while complete != no_of_processes:
for j in range(no_of_processes):
if arrival_time[j] <= increment_time and remaining_time[j] > 0:
if remaining_time[j] < minm:
minm = remaining_time[j]
short = j
check = True
if arrival_time[j] <= increment_time and remaining_time[j] > 0 and remaining_time[j] < minm:
minm = remaining_time[j]
short = j
check = True

if not check:
increment_time += 1
Expand Down
7 changes: 3 additions & 4 deletions scripts/validate_solutions.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,9 @@ def added_solution_file_path() -> list[pathlib.Path]:


def collect_solution_file_paths() -> list[pathlib.Path]:
if os.environ.get("CI") and os.environ.get("GITHUB_EVENT_NAME") == "pull_request":
# Return only if there are any, otherwise default to all solutions
if filepaths := added_solution_file_path():
return filepaths
# Return only if there are any, otherwise default to all solutions
if os.environ.get("CI") and os.environ.get("GITHUB_EVENT_NAME") == "pull_request" and (filepaths := added_solution_file_path()):
return filepaths
return all_solution_file_paths()


Expand Down
10 changes: 4 additions & 6 deletions web_programming/emails_from_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,10 @@ def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None
if tag == "a":
# Check the list of defined attributes.
for name, value in attrs:
# If href is defined, and not empty nor # print it.
if name == "href" and value != "#" and value != "":
# If not already in urls.
if value not in self.urls:
url = parse.urljoin(self.domain, value)
self.urls.append(url)
# If href is defined, not empty nor # print it and not already in urls.
if name == "href" and value != "#" and value != "" and value not in self.urls:
url = parse.urljoin(self.domain, value)
self.urls.append(url)


# Get main domain name (example.com)
Expand Down

0 comments on commit 868f619

Please sign in to comment.