Revert "feat: Introduce isort and Python-based code quality tools (#446)"

This reverts commit cfe2b900c7.

The custom scripts introduced to auto-format imports (to enforce project guidelines) caused issues. Specifically, isort’s hardcoded behavior for expanded standard library imports with “as” imports led to unintended formatting. This commit reverts those changes and removes the custom scripts, restoring the project to its previous, stable state.
This commit is contained in:
Jens Bergmann
2025-03-13 11:55:31 +01:00
committed by GitHub
parent 21f118ba8e
commit 1b004a2a3e
5 changed files with 2 additions and 132 deletions

View File

@@ -56,7 +56,6 @@ dev = [
"pylint",
"mypy",
"pyright",
"isort>=5.13.2",
# security:
"bandit",
# packaging:
@@ -84,8 +83,8 @@ app = "python -m kleinanzeigen_bot"
compile.cmd = "python -O -m PyInstaller pyinstaller.spec --clean"
compile.env = {PYTHONHASHSEED = "1", SOURCE_DATE_EPOCH = "0"} # https://pyinstaller.org/en/stable/advanced-topics.html#creating-a-reproducible-build
debug = "python -m pdb -m kleinanzeigen_bot"
format = "python -m scripts.format_code"
lint = "python -m scripts.lint_code"
format = "autopep8 --recursive --in-place src tests --verbose"
lint = {shell = "pylint -v src tests && autopep8 -v --exit-code --recursive --diff src tests && mypy" }
audit = "bandit -c pyproject.toml -r src"
test = "python -m pytest --capture=tee-sys -v"
utest = "python -m pytest --capture=tee-sys -v -m 'not itest'"
@@ -267,15 +266,3 @@ filterwarnings = [
"ignore:Exception ignored in:pytest.PytestUnraisableExceptionWarning",
"ignore::DeprecationWarning"
]
# Add isort configuration to format imports
[tool.isort]
profile = "black"
line_length = 160
combine_as_imports = true
combine_star = true
multi_line_output = 3
force_grid_wrap = 0
ensure_newline_before_comments = true
no_lines_before = ["LOCALFOLDER"]
combine_straight_imports = true

View File

@@ -1 +0,0 @@
"""Helper scripts for development tasks."""

View File

@@ -1,33 +0,0 @@
#!/usr/bin/env python3
"""Helper script to format Python code using isort and autopep8."""
import subprocess, sys
from scripts.git_utils import get_modified_python_files
def format_files() -> int:
"""Format Python files using isort and autopep8.
Returns:
int: 0 on success, non-zero on failure
"""
try:
# Format imports in modified files
py_files = get_modified_python_files()
if py_files:
subprocess.run(['isort', *py_files], check=True)
# Format all files with autopep8
subprocess.run(
['autopep8', '--recursive', '--in-place', 'src', 'tests', '--verbose'],
check=True
)
return 0
except subprocess.CalledProcessError as e:
print(f"Error during formatting: {e}", file=sys.stderr)
return 1
if __name__ == '__main__':
sys.exit(format_files())

View File

@@ -1,18 +0,0 @@
#!/usr/bin/env python3
"""Utility functions for git operations."""
import subprocess
from collections.abc import Sequence
def get_modified_python_files() -> Sequence[str]:
"""Get list of modified Python files from git.
Returns:
Sequence[str]: List of modified Python file paths
"""
git_cmd = ['git', 'diff', '--name-only', '--diff-filter=ACMR', 'HEAD']
result = subprocess.run(git_cmd, capture_output=True, text=True, check=True)
if not result.stdout.strip():
return []
return [f for f in result.stdout.splitlines() if f.endswith('.py')]

View File

@@ -1,65 +0,0 @@
#!/usr/bin/env python3
"""Helper script to lint Python code using multiple tools."""
import subprocess, sys
from collections.abc import Sequence
from scripts.git_utils import get_modified_python_files
def run_tool(cmd: Sequence[str], tool_name: str) -> tuple[int, str]:
"""Run a lint tool and return its exit code and error message.
Args:
cmd: Command to run as list of strings
tool_name: Name of the tool for error messages
Returns:
tuple[int, str]: tuple of (exit_code, error_message)
"""
try:
subprocess.run(list(cmd), check=True)
return 0, ""
except subprocess.CalledProcessError as e:
return e.returncode, f"{tool_name} fehlgeschlagen\n"
def lint_files() -> int:
"""Run all linting tools.
Returns:
int: Number of errors encountered
"""
errors = 0
error_messages = []
# Run isort on modified files
py_files = get_modified_python_files()
if py_files:
code, msg = run_tool(['isort', *py_files], 'isort')
errors += code
if msg:
error_messages.append(msg)
# Run other linting tools
tools = [
(['pylint', '-v', 'src', 'tests'], 'pylint'),
(['autopep8', '-v', '--in-place', '--recursive', 'src', 'tests'], 'autopep8'),
(['mypy', 'src', 'tests'], 'mypy')
]
for cmd, name in tools:
code, msg = run_tool(cmd, name)
errors += code
if msg:
error_messages.append(msg)
# Print all error messages at the end
if error_messages:
print("\n".join(error_messages), file=sys.stderr)
return errors
if __name__ == '__main__':
sys.exit(lint_files())