Skip to content

[pre-commit.ci] pre-commit autoupdate -- ruff 2025 stable format #12521

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 9 commits into from
Jan 13, 2025
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ repos:
- id: auto-walrus

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.6
rev: v0.9.1
hooks:
- id: ruff
- id: ruff-format
Expand Down
12 changes: 6 additions & 6 deletions ciphers/base64_cipher.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,13 +105,13 @@ def base64_decode(encoded_data: str) -> bytes:

# Check if the encoded string contains non base64 characters
if padding:
assert all(
char in B64_CHARSET for char in encoded_data[:-padding]
), "Invalid base64 character(s) found."
assert all(char in B64_CHARSET for char in encoded_data[:-padding]), (
"Invalid base64 character(s) found."
)
else:
assert all(
char in B64_CHARSET for char in encoded_data
), "Invalid base64 character(s) found."
assert all(char in B64_CHARSET for char in encoded_data), (
"Invalid base64 character(s) found."
)

# Check the padding
assert len(encoded_data) % 4 == 0 and padding < 3, "Incorrect padding"
Expand Down
2 changes: 1 addition & 1 deletion ciphers/caesar_cipher.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ def brute_force(input_string: str, alphabet: str | None = None) -> dict[int, str

if __name__ == "__main__":
while True:
print(f'\n{"-" * 10}\n Menu\n{"-" * 10}')
print(f"\n{'-' * 10}\n Menu\n{'-' * 10}")
print(*["1.Encrypt", "2.Decrypt", "3.BruteForce", "4.Quit"], sep="\n")

# get user input
Expand Down
2 changes: 1 addition & 1 deletion computer_vision/flip_augmentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def main() -> None:
file_name = paths[index].split(os.sep)[-1].rsplit(".", 1)[0]
file_root = f"{OUTPUT_DIR}/{file_name}_FLIP_{letter_code}"
cv2.imwrite(f"{file_root}.jpg", image, [cv2.IMWRITE_JPEG_QUALITY, 85])
print(f"Success {index+1}/{len(new_images)} with {file_name}")
print(f"Success {index + 1}/{len(new_images)} with {file_name}")
annos_list = []
for anno in new_annos[index]:
obj = f"{anno[0]} {anno[1]} {anno[2]} {anno[3]} {anno[4]}"
Expand Down
2 changes: 1 addition & 1 deletion computer_vision/mosaic_augmentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ def main() -> None:
file_name = path.split(os.sep)[-1].rsplit(".", 1)[0]
file_root = f"{OUTPUT_DIR}/{file_name}_MOSAIC_{letter_code}"
cv2.imwrite(f"{file_root}.jpg", new_image, [cv2.IMWRITE_JPEG_QUALITY, 85])
print(f"Succeeded {index+1}/{NUMBER_IMAGES} with {file_name}")
print(f"Succeeded {index + 1}/{NUMBER_IMAGES} with {file_name}")
annos_list = []
for anno in new_annos:
width = anno[3] - anno[1]
Expand Down
6 changes: 3 additions & 3 deletions data_structures/hashing/number_theory/prime_numbers.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ def is_prime(number: int) -> bool:
"""

# precondition
assert isinstance(number, int) and (
number >= 0
), "'number' must been an int and positive"
assert isinstance(number, int) and (number >= 0), (
"'number' must been an int and positive"
)

if 1 < number < 4:
# 2 and 3 are primes
Expand Down
6 changes: 3 additions & 3 deletions data_structures/heap/min_heap.py
Original file line number Diff line number Diff line change
Expand Up @@ -124,9 +124,9 @@ def is_empty(self):
return len(self.heap) == 0

def decrease_key(self, node, new_value):
assert (
self.heap[self.idx_of_element[node]].val > new_value
), "newValue must be less that current value"
assert self.heap[self.idx_of_element[node]].val > new_value, (
"newValue must be less that current value"
)
node.val = new_value
self.heap_dict[node.name] = new_value
self.sift_up(self.idx_of_element[node])
Expand Down
12 changes: 6 additions & 6 deletions data_structures/kd_tree/tests/test_kdtree.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,14 @@ def test_build_kdtree(num_points, cube_size, num_dimensions, depth, expected_res
assert kdtree is not None, "Expected a KDNode, got None"

# Check if root has correct dimensions
assert (
len(kdtree.point) == num_dimensions
), f"Expected point dimension {num_dimensions}, got {len(kdtree.point)}"
assert len(kdtree.point) == num_dimensions, (
f"Expected point dimension {num_dimensions}, got {len(kdtree.point)}"
)

# Check that the tree is balanced to some extent (simplistic check)
assert isinstance(
kdtree, KDNode
), f"Expected KDNode instance, got {type(kdtree)}"
assert isinstance(kdtree, KDNode), (
f"Expected KDNode instance, got {type(kdtree)}"
)


def test_nearest_neighbour_search():
Expand Down
24 changes: 12 additions & 12 deletions data_structures/suffix_tree/tests/test_suffix_tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,37 +22,37 @@ def test_search_existing_patterns(self) -> None:
patterns = ["ana", "ban", "na"]
for pattern in patterns:
with self.subTest(pattern=pattern):
assert self.suffix_tree.search(
pattern
), f"Pattern '{pattern}' should be found."
assert self.suffix_tree.search(pattern), (
f"Pattern '{pattern}' should be found."
)

def test_search_non_existing_patterns(self) -> None:
"""Test searching for patterns that do not exist in the suffix tree."""
patterns = ["xyz", "apple", "cat"]
for pattern in patterns:
with self.subTest(pattern=pattern):
assert not self.suffix_tree.search(
pattern
), f"Pattern '{pattern}' should not be found."
assert not self.suffix_tree.search(pattern), (
f"Pattern '{pattern}' should not be found."
)

def test_search_empty_pattern(self) -> None:
"""Test searching for an empty pattern."""
assert self.suffix_tree.search(""), "An empty pattern should be found."

def test_search_full_text(self) -> None:
"""Test searching for the full text."""
assert self.suffix_tree.search(
self.text
), "The full text should be found in the suffix tree."
assert self.suffix_tree.search(self.text), (
"The full text should be found in the suffix tree."
)

def test_search_substrings(self) -> None:
"""Test searching for substrings of the full text."""
substrings = ["ban", "ana", "a", "na"]
for substring in substrings:
with self.subTest(substring=substring):
assert self.suffix_tree.search(
substring
), f"Substring '{substring}' should be found."
assert self.suffix_tree.search(substring), (
f"Substring '{substring}' should be found."
)


if __name__ == "__main__":
Expand Down
6 changes: 3 additions & 3 deletions dynamic_programming/climbing_stairs.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ def climb_stairs(number_of_steps: int) -> int:
...
AssertionError: number_of_steps needs to be positive integer, your input -7
"""
assert (
isinstance(number_of_steps, int) and number_of_steps > 0
), f"number_of_steps needs to be positive integer, your input {number_of_steps}"
assert isinstance(number_of_steps, int) and number_of_steps > 0, (
f"number_of_steps needs to be positive integer, your input {number_of_steps}"
)
if number_of_steps == 1:
return 1
previous, current = 1, 1
Expand Down
6 changes: 3 additions & 3 deletions dynamic_programming/iterating_through_submasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ def list_of_submasks(mask: int) -> list[int]:

"""

assert (
isinstance(mask, int) and mask > 0
), f"mask needs to be positive integer, your input {mask}"
assert isinstance(mask, int) and mask > 0, (
f"mask needs to be positive integer, your input {mask}"
)

"""
first submask iterated will be mask itself then operation will be performed
Expand Down
2 changes: 1 addition & 1 deletion dynamic_programming/matrix_chain_multiplication.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ def elapsed_time(msg: str) -> Iterator:

start = perf_counter_ns()
yield
print(f"Finished: {msg} in {(perf_counter_ns() - start) / 10 ** 9} seconds.")
print(f"Finished: {msg} in {(perf_counter_ns() - start) / 10**9} seconds.")


if __name__ == "__main__":
Expand Down
4 changes: 2 additions & 2 deletions machine_learning/linear_discriminant_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ def main():
user_count = valid_input(
input_type=int,
condition=lambda x: x > 0,
input_msg=(f"Enter The number of instances for class_{i+1}: "),
input_msg=(f"Enter The number of instances for class_{i + 1}: "),
err_msg="Number of instances should be positive!",
)
counts.append(user_count)
Expand All @@ -333,7 +333,7 @@ def main():
for a in range(n_classes):
user_mean = valid_input(
input_type=float,
input_msg=(f"Enter the value of mean for class_{a+1}: "),
input_msg=(f"Enter the value of mean for class_{a + 1}: "),
err_msg="This is an invalid value.",
)
user_means.append(user_mean)
Expand Down
2 changes: 1 addition & 1 deletion maths/dual_number_automatic_differentiation.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
def __repr__(self):
return (
f"{self.real}+"
f"{'+'.join(str(dual)+'E'+str(n+1)for n,dual in enumerate(self.duals))}"
f"{'+'.join(str(dual) + 'E' + str(n + 1) for n, dual in enumerate(self.duals))}"

Check failure on line 22 in maths/dual_number_automatic_differentiation.py

View workflow job for this annotation

GitHub Actions / ruff

Ruff (E501)

maths/dual_number_automatic_differentiation.py:22:89: E501 Line too long (92 > 88)
)

def reduce(self):
Expand Down
4 changes: 3 additions & 1 deletion maths/max_sum_sliding_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,6 @@ def max_sum_in_array(array: list[int], k: int) -> int:
testmod()
array = [randint(-1000, 1000) for i in range(100)]
k = randint(0, 110)
print(f"The maximum sum of {k} consecutive elements is {max_sum_in_array(array,k)}")
print(
f"The maximum sum of {k} consecutive elements is {max_sum_in_array(array, k)}"
)
12 changes: 6 additions & 6 deletions maths/numerical_analysis/integration_by_simpson_approx.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,18 +88,18 @@ def simpson_integration(function, a: float, b: float, precision: int = 4) -> flo
AssertionError: precision should be positive integer your input : -1

"""
assert callable(
function
), f"the function(object) passed should be callable your input : {function}"
assert callable(function), (
f"the function(object) passed should be callable your input : {function}"
)
assert isinstance(a, (float, int)), f"a should be float or integer your input : {a}"
assert isinstance(function(a), (float, int)), (
"the function should return integer or float return type of your function, "
f"{type(a)}"
)
assert isinstance(b, (float, int)), f"b should be float or integer your input : {b}"
assert (
isinstance(precision, int) and precision > 0
), f"precision should be positive integer your input : {precision}"
assert isinstance(precision, int) and precision > 0, (
f"precision should be positive integer your input : {precision}"
)

# just applying the formula of simpson for approximate integration written in
# mentioned article in first comment of this file and above this function
Expand Down
12 changes: 6 additions & 6 deletions maths/prime_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,12 @@ def test_primes(self):
def test_not_primes(self):
with pytest.raises(ValueError):
is_prime(-19)
assert not is_prime(
0
), "Zero doesn't have any positive factors, primes must have exactly two."
assert not is_prime(
1
), "One only has 1 positive factor, primes must have exactly two."
assert not is_prime(0), (
"Zero doesn't have any positive factors, primes must have exactly two."
)
assert not is_prime(1), (
"One only has 1 positive factor, primes must have exactly two."
)
assert not is_prime(2 * 2)
assert not is_prime(2 * 3)
assert not is_prime(3 * 3)
Expand Down
42 changes: 21 additions & 21 deletions maths/primelib.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ def is_prime(number: int) -> bool:
"""

# precondition
assert isinstance(number, int) and (
number >= 0
), "'number' must been an int and positive"
assert isinstance(number, int) and (number >= 0), (
"'number' must been an int and positive"
)

status = True

Expand Down Expand Up @@ -254,9 +254,9 @@ def greatest_prime_factor(number):
"""

# precondition
assert isinstance(number, int) and (
number >= 0
), "'number' must been an int and >= 0"
assert isinstance(number, int) and (number >= 0), (
"'number' must been an int and >= 0"
)

ans = 0

Expand Down Expand Up @@ -296,9 +296,9 @@ def smallest_prime_factor(number):
"""

# precondition
assert isinstance(number, int) and (
number >= 0
), "'number' must been an int and >= 0"
assert isinstance(number, int) and (number >= 0), (
"'number' must been an int and >= 0"
)

ans = 0

Expand Down Expand Up @@ -399,9 +399,9 @@ def goldbach(number):
"""

# precondition
assert (
isinstance(number, int) and (number > 2) and is_even(number)
), "'number' must been an int, even and > 2"
assert isinstance(number, int) and (number > 2) and is_even(number), (
"'number' must been an int, even and > 2"
)

ans = [] # this list will returned

Expand Down Expand Up @@ -525,9 +525,9 @@ def kg_v(number1, number2):
done.append(n)

# precondition
assert isinstance(ans, int) and (
ans >= 0
), "'ans' must been from type int and positive"
assert isinstance(ans, int) and (ans >= 0), (
"'ans' must been from type int and positive"
)

return ans

Expand Down Expand Up @@ -574,9 +574,9 @@ def get_prime(n):
ans += 1

# precondition
assert isinstance(ans, int) and is_prime(
ans
), "'ans' must been a prime number and from type int"
assert isinstance(ans, int) and is_prime(ans), (
"'ans' must been a prime number and from type int"
)

return ans

Expand Down Expand Up @@ -705,9 +705,9 @@ def is_perfect_number(number):
"""

# precondition
assert isinstance(number, int) and (
number > 1
), "'number' must been an int and >= 1"
assert isinstance(number, int) and (number > 1), (
"'number' must been an int and >= 1"
)

divisors = get_divisors(number)

Expand Down
2 changes: 1 addition & 1 deletion matrix/matrix_based_game.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ def process_game(size: int, matrix: list[str], moves: list[tuple[int, int]]) ->
size = int(input("Enter the size of the matrix: "))
validate_matrix_size(size)
print(f"Enter the {size} rows of the matrix:")
matrix = [input(f"Row {i+1}: ") for i in range(size)]
matrix = [input(f"Row {i + 1}: ") for i in range(size)]
validate_matrix_content(matrix, size)
moves_input = input("Enter the moves (e.g., '0 0, 1 1'): ")
moves = parse_moves(moves_input)
Expand Down
6 changes: 3 additions & 3 deletions neural_network/input_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,9 @@ def __init__(
self._num_examples = 10000
self.one_hot = one_hot
else:
assert (
images.shape[0] == labels.shape[0]
), f"images.shape: {images.shape} labels.shape: {labels.shape}"
assert images.shape[0] == labels.shape[0], (
f"images.shape: {images.shape} labels.shape: {labels.shape}"
)
self._num_examples = images.shape[0]

# Convert shape from [num examples, rows, columns, depth]
Expand Down
6 changes: 3 additions & 3 deletions scripts/validate_solutions.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,6 @@ def test_project_euler(solution_path: pathlib.Path) -> None:
solution_module = convert_path_to_module(solution_path)
answer = str(solution_module.solution())
answer = hashlib.sha256(answer.encode()).hexdigest()
assert (
answer == expected
), f"Expected solution to {problem_number} to have hash {expected}, got {answer}"
assert answer == expected, (
f"Expected solution to {problem_number} to have hash {expected}, got {answer}"
)
Loading
Loading