8aeee0d55a
refactor(lichess_bot): reduce complexity with dataclasses and extracted functions
...
- Add GameState, GameMeta, BotContext dataclasses for state bundling
- Extract 20+ helper functions from nested closures to module level
- Fix C901, PLR0912, PLR0915 complexity violations
- Fix mypy type errors with proper type annotations
- Add noqa for intentional S603 (subprocess call to trusted internal script)
2025-11-30 23:40:53 +01:00
da6271c438
refactor(stockfish_analysis): reduce complexity of main() function
...
Break down monolithic main() into smaller, focused functions:
- _build_argument_parser(): CLI argument setup
- _load_game(): PGN file loading and parsing
- _configure_threads/hash/multipv/nnue(): Engine configuration helpers
- _setup_engine(): Engine initialization orchestration
- _get_best_move(): Engine best move extraction
- _evaluate_position(): Position evaluation wrapper
- _classify_mate_move(): Mate score classification logic
- _analyze_single_move(): Single move analysis
- _log_move_analysis(): Move analysis logging
- _run_analysis(): Analysis loop orchestration
- _analyze_last_move/all_moves(): Specific analysis modes
Add dataclasses MoveAnalysis and AnalysisContext to bundle related
parameters, improving code organization and reducing function signatures.
This removes the need for C901, PLR0912, PLR0915 per-file ignores
as all functions now comply with complexity limits.
2025-11-30 23:23:10 +01:00
d22619b483
fix(lint): convert os.path to pathlib - remove PTH per-file ignores
...
- Converted os.path patterns to pathlib.Path in 15+ files
- os.path.join → Path /
- os.path.dirname → Path.parent
- os.path.exists → Path.exists()
- os.path.isfile → Path.is_file()
- os.path.abspath → Path.resolve()
- os.mkdir → Path.mkdir()
- os.listdir → Path.iterdir()
- os.getcwd → Path.cwd()
- os.replace → Path.replace()
- Updated function type hints to accept str | Path
Added PTH123 (open() vs Path.open()) to global ignores as stylistic preference
2025-11-30 23:03:03 +01:00
b1a5f245a2
fix(lint): LOG015 - replace root logger with module loggers
...
- Add _logger = logging.getLogger(__name__) to all modules
- Replace logging.X() calls with _logger.X() calls
- Remove logging.basicConfig() from module level (keep in run_bot())
- Add G004 to global ignores (f-strings in logging are more readable)
- Remove LOG015 and G004 per-file ignores from pyproject.toml
- Fix pytest_ignore_collect hook signature in conftest.py
2025-11-30 21:59:24 +01:00
dd2da6e2cc
fix(lint): BLE001 - replace blind except with specific exceptions
...
Replace bare 'except Exception' with specific exception types:
- ValueError for move parsing (chess.Move.from_uci, board.push_uci)
- json.JSONDecodeError for JSON parsing
- OSError for file operations
- ImportError for optional imports
- AttributeError for attribute access
- TypeError for type-related operations
- requests.RequestException for HTTP operations
- subprocess.SubprocessError for subprocess failures
- selenium.NoSuchElementException for element finding
Also fixes:
- pytest hook signature issue in conftest.py (_config -> _)
- Missing file handling in test_puzzles.py
- Line length in stockfish_analysis.py
Removes all BLE001 per-file ignores from pyproject.toml.
2025-11-30 21:37:47 +01:00
b78f02cf05
fix: resolve PERF203 try-except in loop violations
...
- Extract try-except bodies into helper functions:
- download_cats: _download_single_image()
- randomize_numbers: _parse_single_number()
- lichess_bot/main: _apply_move_to_board(), _process_event_stream(), _run_event_loop_iteration()
- Use else block for return statements after try (TRY300)
- Remove PERF203 from per-file ignores in pyproject.toml
2025-11-30 21:29:03 +01:00
2dd4e68edb
refactor: rename folders to fix N999, INP001, S311 linting rules
...
- Rename PYTHON/ to python_pkg/ (fix N999 uppercase folder)
- Rename camelCase folders to snake_case:
- randomJPG -> random_jpg
- tagDivider -> tag_divider
- downloadCats -> download_cats
- keyboardCoop -> keyboard_coop
- extractLinks -> extract_links
- scapeWebsite -> scrape_website
- Rename camelCase files:
- generateJpeg.py -> generate_jpeg.py
- tagDivider.py -> tag_divider.py
- Rename poker-modifier-app to poker_modifier_app (fix INP001)
- Add __init__.py to poker_modifier_app
- Replace random module with secrets.SystemRandom (fix S311)
- Fix S110 try-except-pass with contextlib.suppress
- Update all imports and config references
2025-11-30 21:20:17 +01:00