Enable ruff PGH003 rule (#11345)

* Enable ruff PGH003 rule

* Fix

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Fix

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
Maxim Smolskiy 2024-04-02 22:29:34 +03:00 committed by GitHub
parent f5bbea3776
commit 53b2926704
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 20 additions and 19 deletions

View File

@ -40,7 +40,7 @@ def build_tree(letters: list[Letter]) -> Letter | TreeNode:
Run through the list of Letters and build the min heap Run through the list of Letters and build the min heap
for the Huffman Tree. for the Huffman Tree.
""" """
response: list[Letter | TreeNode] = letters # type: ignore response: list[Letter | TreeNode] = list(letters)
while len(response) > 1: while len(response) > 1:
left = response.pop(0) left = response.pop(0)
right = response.pop(0) right = response.pop(0)
@ -59,7 +59,7 @@ def traverse_tree(root: Letter | TreeNode, bitstring: str) -> list[Letter]:
if isinstance(root, Letter): if isinstance(root, Letter):
root.bitstring[root.letter] = bitstring root.bitstring[root.letter] = bitstring
return [root] return [root]
treenode: TreeNode = root # type: ignore treenode: TreeNode = root
letters = [] letters = []
letters += traverse_tree(treenode.left, bitstring + "0") letters += traverse_tree(treenode.left, bitstring + "0")
letters += traverse_tree(treenode.right, bitstring + "1") letters += traverse_tree(treenode.right, bitstring + "1")

View File

@ -294,9 +294,9 @@ class BinarySearchTree:
predecessor = self.get_max( predecessor = self.get_max(
node.left node.left
) # Gets the max value of the left branch ) # Gets the max value of the left branch
self.remove(predecessor.value) # type: ignore self.remove(predecessor.value) # type: ignore[union-attr]
node.value = ( node.value = (
predecessor.value # type: ignore predecessor.value # type: ignore[union-attr]
) # Assigns the value to the node to delete and keep tree structure ) # Assigns the value to the node to delete and keep tree structure
def preorder_traverse(self, node: Node | None) -> Iterable: def preorder_traverse(self, node: Node | None) -> Iterable:

View File

@ -63,7 +63,7 @@ def insert_node(head: Node | None, data: int) -> Node:
while temp_node.next_node: while temp_node.next_node:
temp_node = temp_node.next_node temp_node = temp_node.next_node
temp_node.next_node = new_node # type: ignore temp_node.next_node = new_node
return head return head

View File

@ -17,7 +17,7 @@ the boundary of the Mandelbrot set a fractal curve.
import colorsys import colorsys
from PIL import Image # type: ignore from PIL import Image
def get_distance(x: float, y: float, max_step: int) -> float: def get_distance(x: float, y: float, max_step: int) -> float:

View File

@ -2,7 +2,7 @@
# https://www.tutorialspoint.com/computer_graphics/computer_graphics_curves.htm # https://www.tutorialspoint.com/computer_graphics/computer_graphics_curves.htm
from __future__ import annotations from __future__ import annotations
from scipy.special import comb # type: ignore from scipy.special import comb
class BezierCurve: class BezierCurve:

View File

@ -96,8 +96,8 @@ def analyze_text(text: str) -> tuple[dict, dict]:
The first dictionary stores the frequency of single character strings. The first dictionary stores the frequency of single character strings.
The second dictionary stores the frequency of two character strings. The second dictionary stores the frequency of two character strings.
""" """
single_char_strings = Counter() # type: ignore single_char_strings = Counter() # type: ignore[var-annotated]
two_char_strings = Counter() # type: ignore two_char_strings = Counter() # type: ignore[var-annotated]
single_char_strings[text[-1]] += 1 single_char_strings[text[-1]] += 1
# first case when we have space at start. # first case when we have space at start.

View File

@ -116,7 +116,9 @@ def spiral_traversal(matrix: list[list]) -> list[int]:
[1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7] + spiral_traversal([]) [1, 2, 3, 4, 8, 12, 11, 10, 9, 5, 6, 7] + spiral_traversal([])
""" """
if matrix: if matrix:
return list(matrix.pop(0)) + spiral_traversal(list(zip(*matrix))[::-1]) # type: ignore return list(matrix.pop(0)) + spiral_traversal(
[list(row) for row in zip(*matrix)][::-1]
)
else: else:
return [] return []

View File

@ -12,7 +12,7 @@ import logging
import sys import sys
import numpy as np import numpy as np
import pytest # type: ignore import pytest
# Custom/local libraries # Custom/local libraries
from matrix import matrix_operation as matop from matrix import matrix_operation as matop

View File

@ -68,7 +68,7 @@ def chain(number: int) -> bool:
""" """
if CHAINS[number - 1] is not None: if CHAINS[number - 1] is not None:
return CHAINS[number - 1] # type: ignore return CHAINS[number - 1] # type: ignore[return-value]
number_chain = chain(next_number(number)) number_chain = chain(next_number(number))
CHAINS[number - 1] = number_chain CHAINS[number - 1] = number_chain

View File

@ -15,7 +15,7 @@ the last nine digits are 1-9 pandigital, find k.
import sys import sys
sys.set_int_max_str_digits(0) # type: ignore sys.set_int_max_str_digits(0)
def check(number: int) -> bool: def check(number: int) -> bool:

View File

@ -6,7 +6,6 @@ lint.ignore = [ # `ruff rule S101` for a description of that rule
"EM101", # Exception must not use a string literal, assign to variable first "EM101", # Exception must not use a string literal, assign to variable first
"EXE001", # Shebang is present but file is not executable" -- FIX ME "EXE001", # Shebang is present but file is not executable" -- FIX ME
"G004", # Logging statement uses f-string "G004", # Logging statement uses f-string
"PGH003", # Use specific rule codes when ignoring type issues -- FIX ME
"PLC1901", # `{}` can be simplified to `{}` as an empty string is falsey "PLC1901", # `{}` can be simplified to `{}` as an empty string is falsey
"PLW060", # Using global for `{name}` but no assignment is done -- DO NOT FIX "PLW060", # Using global for `{name}` but no assignment is done -- DO NOT FIX
"PLW2901", # PLW2901: Redefined loop variable -- FIX ME "PLW2901", # PLW2901: Redefined loop variable -- FIX ME

View File

@ -4,7 +4,7 @@ import os
try: try:
from .build_directory_md import good_file_paths from .build_directory_md import good_file_paths
except ImportError: except ImportError:
from build_directory_md import good_file_paths # type: ignore from build_directory_md import good_file_paths # type: ignore[no-redef]
filepaths = list(good_file_paths()) filepaths = list(good_file_paths())
assert filepaths, "good_file_paths() failed!" assert filepaths, "good_file_paths() failed!"

View File

@ -21,8 +21,8 @@ with open(PROJECT_EULER_ANSWERS_PATH) as file_handle:
def convert_path_to_module(file_path: pathlib.Path) -> ModuleType: def convert_path_to_module(file_path: pathlib.Path) -> ModuleType:
"""Converts a file path to a Python module""" """Converts a file path to a Python module"""
spec = importlib.util.spec_from_file_location(file_path.name, str(file_path)) spec = importlib.util.spec_from_file_location(file_path.name, str(file_path))
module = importlib.util.module_from_spec(spec) # type: ignore module = importlib.util.module_from_spec(spec) # type: ignore[arg-type]
spec.loader.exec_module(module) # type: ignore spec.loader.exec_module(module) # type: ignore[union-attr]
return module return module
@ -92,7 +92,7 @@ def test_project_euler(solution_path: pathlib.Path) -> None:
problem_number: str = solution_path.parent.name[8:].zfill(3) problem_number: str = solution_path.parent.name[8:].zfill(3)
expected: str = PROBLEM_ANSWERS[problem_number] expected: str = PROBLEM_ANSWERS[problem_number]
solution_module = convert_path_to_module(solution_path) solution_module = convert_path_to_module(solution_path)
answer = str(solution_module.solution()) # type: ignore answer = str(solution_module.solution())
answer = hashlib.sha256(answer.encode()).hexdigest() answer = hashlib.sha256(answer.encode()).hexdigest()
assert ( assert (
answer == expected answer == expected

View File

@ -7,7 +7,7 @@ more convenient to use in Python web projects (e.g. Django or Flask-based)
from typing import NamedTuple from typing import NamedTuple
import requests import requests
from lxml import html # type: ignore from lxml import html
class CovidData(NamedTuple): class CovidData(NamedTuple):