From d94a1bfe5889de309a504db2d8f2bbf52566d47e Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 31 Oct 2026 11:23:38 +0000 Subject: [PATCH 1/3] fix: requirements.txt to reduce vulnerabilities The following vulnerabilities are fixed by pinning transitive dependencies: - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277713 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277726 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277727 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277734 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277776 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277777 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277778 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277779 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277780 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277782 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277783 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277784 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277785 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277786 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277793 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277795 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277796 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277797 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277799 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277801 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277802 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21279300 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21369600 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430900 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430916 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430917 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430990 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430991 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430998 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430999 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431000 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431005 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431018 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431022 --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 71301e0..2e8e81d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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 From eeba710f0f0afb45dda83242999534120dce3229 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 31 Oct 2026 11:25:00 +0000 Subject: [PATCH 2/3] fix: requirements.txt to reduce vulnerabilities The following vulnerabilities are fixed by pinning transitive dependencies: - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277713 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277726 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277727 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277734 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277776 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277777 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277778 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277779 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277780 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277782 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277783 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277784 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277785 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277786 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277793 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277795 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277796 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277797 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277799 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277801 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21277802 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21279300 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21369600 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430900 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430916 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430917 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430990 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430991 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430998 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21430999 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431000 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431005 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431018 - https://snyk.io/vuln/SNYK-PYTHON-PILLOW-21431022 From 42945ccd6f14b0b95ab0b77f99379a491a6c4f3d Mon Sep 17 00:00:00 2001 From: amitdevx Date: Sat, 31 Oct 2026 17:18:10 +0530 Subject: [PATCH 3/3] fix(ci): align python version matrix and update google-genai for pillow>=13.0.0 compatibility --- .github/workflows/quality-assurance.yml | 30 ++++++++++++------------- INSTALL.md | 2 +- README.md | 2 +- requirements.txt | 2 +- 4 files changed, 18 insertions(+), 18 deletions(-) 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 2e8e81d..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