diff --git a/.github/workflows/quality-assurance.yml b/.github/workflows/quality-assurance.yml index 860ad2b..fa190c3 100644 --- a/.github/workflows/quality-assurance.yml +++ b/.github/workflows/quality-assurance.yml @@ -16,10 +16,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Configure Python 3.10 + - name: Configure Python 3.11 uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" - name: Validate Python Syntax run: | # Performs bytecode compilation to detect syntax issues @@ -34,7 +34,7 @@ jobs: - name: Configure Python Environment uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" - name: Install Style Checkers run: pip install black isort - name: Validate Black Code Formatting @@ -54,7 +54,7 @@ jobs: - name: Configure Python Environment uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" - name: Install Code Analyzer run: pip install flake8 - name: Execute Flake8 Analysis @@ -73,7 +73,7 @@ jobs: - name: Configure Python Environment uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" - name: Install Type Checker run: pip install mypy - name: Execute Type Analysis @@ -89,7 +89,7 @@ jobs: - name: Configure Python Environment uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" - name: Install Security Scanner run: pip install bandit[toml] - name: Execute Security Scan @@ -105,7 +105,7 @@ jobs: - name: Configure Python Environment uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" - name: Install Audit Tool run: pip install pip-audit - name: Execute Dependency Audit @@ -114,7 +114,7 @@ jobs: pip install -r requirements.txt pip-audit --desc - # Validations 7-9: Test Suite Execution Matrix (Python 3.10-3.12) + # Validations 7-8: Test Suite Execution Matrix (Python 3.11-3.12) execute-tests: name: Test Suite - Python ${{ matrix.python-version }} needs: [validate-syntax] @@ -122,8 +122,8 @@ jobs: strategy: fail-fast: false matrix: - # Removed "3.13" from here - python-version: ["3.10", "3.11", "3.12"] + # Python >=3.11 required due to Pillow >=13.0.0 + python-version: ["3.11", "3.12"] steps: - uses: actions/checkout@v4 - name: Configure Python ${{ matrix.python-version }} @@ -148,7 +148,7 @@ jobs: echo "️ No test directory found, skipping test execution" fi - # Validation 10: Package Build Verification + # Validation 9: Package Build Verification verify-package: name: Package Build Verification needs: [execute-tests] @@ -158,9 +158,9 @@ jobs: - name: Configure Python Environment uses: actions/setup-python@v5 with: - python-version: "3.10" + python-version: "3.11" - name: Install Packaging Tools - run: pip install build twine + run: pip install build twine setuptools wheel - name: Create MANIFEST.in run: | cat > MANIFEST.in << 'EOF' @@ -180,7 +180,7 @@ jobs: requirements_file = 'requirements.txt' if os.path.exists(requirements_file): with open(requirements_file) as f: - return [line.strip() for line in f if line.strip() and not line.startswith('#')] + return [line.split('#')[0].strip() for line in f if line.split('#')[0].strip()] return [] # Read README safely @@ -196,7 +196,7 @@ jobs: version="1.0.0", packages=find_packages(exclude=['tests', 'tests.*']), install_requires=read_requirements(), - python_requires='>=3.10', + python_requires='>=3.11', author="Professor Profiler Team", description="Multi-agent exam analysis system powered by Google Gemini", long_description=read_readme(), diff --git a/INSTALL.md b/INSTALL.md index c8e275c..49f8b85 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -7,7 +7,7 @@ Welcome to **Professor Profiler**! This guide will walk you through setting up t ## 1. Prerequisites Before starting, ensure you have the following installed on your system: -- **Python 3.10+** +- **Python 3.11+** - **Node.js 18+** (Required only for the interactive CLI) - **Git** diff --git a/README.md b/README.md index fc02772..d9db623 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ flowchart TD | Component | Technology | Description | | :--- | :--- | :--- | -| **Core Logic** | Python 3.10+ | Type-hinted, async-native codebase. | +| **Core Logic** | Python 3.11+ | Type-hinted, async-native codebase. | | **LLM Provider** | NVIDIA NIM | OpenAI-compatible endpoint hosting high-performance open models. | | **Fallback Engine** | Google Gemini | Rollback path when NIM fails or for comparison testing. | | **Document Processing** | `pypdf` | Robust text extraction from exam PDFs. | diff --git a/requirements.txt b/requirements.txt index 71301e0..44bea4c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -google-genai==0.3.0 +google-genai==0.8.0 # ponytail: upgraded to resolve pillow>=13.0.0 conflict openai==1.3.0 pypdf==4.0.0 matplotlib==3.8.0 @@ -9,3 +9,4 @@ redis==5.0.1 pytest==8.0.0 pytest-asyncio==0.23.5 reportlab==4.0.9 # For generating sample exam PDFs +pillow>=13.0.0 # not directly required, pinned by Snyk to avoid a vulnerability