Fix hanging test and establish comprehensive development environment
- Fix infinite retry loop in ai_responder.py that caused test_fix1 to hang - Add missing picture_edit parameter to all AIResponse constructor calls - Set up complete development toolchain with Black, isort, Bandit, and MyPy - Create comprehensive Makefile for development workflows - Add pre-commit hooks with formatting, linting, security, and type checking - Update test mocking to provide contextual responses for different scenarios - Configure all tools for 140 character line length and strict type checking - Add DEVELOPMENT.md with setup instructions and workflow documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+57
-7
@@ -1,19 +1,69 @@
|
||||
# Pre-commit hooks configuration for Fjerkroa Bot
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||
rev: 'v1.1.1'
|
||||
# Built-in hooks
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.4.0
|
||||
hooks:
|
||||
- id: mypy
|
||||
args: [--config-file=mypy.ini, --install-types, --non-interactive]
|
||||
- id: trailing-whitespace
|
||||
- id: end-of-file-fixer
|
||||
- id: check-yaml
|
||||
- id: check-toml
|
||||
- id: check-json
|
||||
- id: check-added-large-files
|
||||
- id: check-case-conflict
|
||||
- id: check-merge-conflict
|
||||
- id: debug-statements
|
||||
- id: requirements-txt-fixer
|
||||
|
||||
# Black code formatter
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 23.3.0
|
||||
hooks:
|
||||
- id: black
|
||||
language_version: python3
|
||||
args: [--line-length=140]
|
||||
|
||||
# isort import sorter
|
||||
- repo: https://github.com/pycqa/isort
|
||||
rev: 5.12.0
|
||||
hooks:
|
||||
- id: isort
|
||||
args: [--profile=black, --line-length=140]
|
||||
|
||||
# Flake8 linter
|
||||
- repo: https://github.com/pycqa/flake8
|
||||
rev: 6.0.0
|
||||
hooks:
|
||||
- id: flake8
|
||||
args: [--max-line-length=140]
|
||||
|
||||
# Bandit security scanner
|
||||
- repo: https://github.com/pycqa/bandit
|
||||
rev: 1.7.5
|
||||
hooks:
|
||||
- id: bandit
|
||||
args: [-r, fjerkroa_bot]
|
||||
exclude: tests/
|
||||
|
||||
# MyPy type checker
|
||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||
rev: v1.3.0
|
||||
hooks:
|
||||
- id: mypy
|
||||
additional_dependencies: [types-toml, types-requests]
|
||||
args: [--config-file=pyproject.toml]
|
||||
|
||||
# Local hooks using Makefile
|
||||
- repo: local
|
||||
hooks:
|
||||
- id: pytest
|
||||
name: pytest
|
||||
entry: pytest
|
||||
- id: tests
|
||||
name: Run tests
|
||||
entry: make test-fast
|
||||
language: system
|
||||
pass_filenames: false
|
||||
always_run: true
|
||||
stages: [commit]
|
||||
|
||||
# Configuration
|
||||
default_stages: [commit, push]
|
||||
fail_fast: false
|
||||
|
||||
Reference in New Issue
Block a user