diff --git a/.gitignore b/.gitignore index 591b3e2..7fcef1f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,10 @@ -.env -.DS_Store -.vscode -.idea +__pycache__ .pytest_cache -.coverage -.coverage.* -.coverage.*.* -.coverage.*.*.* -.coverage.*.*.*.* \ No newline at end of file + +.DS_Store + +.env + + +data/init_data/ +logs/ \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 95bab27..080ae92 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,38 +1,34 @@ +# Example Dockerfile showing how to use the new startup system +# This is a reference - not meant to replace your existing Dockerfile + FROM python:3.11-slim +# Set working directory WORKDIR /app -# Install system dependencies -RUN apt-get update && apt-get install -y \ - libreoffice \ - poppler-utils \ - libpq-dev \ - gcc \ - python3-dev \ - postgresql-client \ - curl \ - && rm -rf /var/lib/apt/lists/* - -# Set up virtual environment -RUN python -m venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" - -# Install Python packages +# Copy requirements and install dependencies COPY requirements.txt . -RUN pip install --no-cache-dir --upgrade pip && \ - pip install --no-cache-dir -r requirements.txt +RUN pip install --no-cache-dir -r requirements.txt -# Copy the application +# Copy application code COPY . . -# Create necessary directories -RUN mkdir -p static templates/admin logs +# Make startup script executable +RUN chmod +x start.sh -# Create entrypoint script -COPY docker-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/docker-entrypoint.sh +# Set environment variables +ENV PYTHONPATH=/app +ENV UVICORN_PORT=8000 +ENV UVICORN_WORKERS=4 -EXPOSE ${PORT_BACKEND} +# Expose port +EXPOSE 8000 -ENTRYPOINT ["docker-entrypoint.sh"] -CMD ["python", "main.py"] \ No newline at end of file +# Use the new startup script in production mode +CMD ["./start.sh", "prod"] + +# Alternative: Run initialization first, then production server +# CMD ["sh", "-c", "./start.sh init && ./start.sh prod"] + +# Alternative: Use Python directly +# CMD ["python3", "main.py", "--mode", "prod"] diff --git a/Dockerfile.macos.dev b/Dockerfile.macos.dev deleted file mode 100644 index 68a3d0a..0000000 --- a/Dockerfile.macos.dev +++ /dev/null @@ -1,38 +0,0 @@ -FROM python:3.11-slim - -WORKDIR /app/backend - -# Install system dependencies -RUN apt-get update && apt-get install -y \ - libreoffice \ - poppler-utils \ - libpq-dev \ - gcc \ - python3-dev \ - postgresql-client \ - curl \ - && rm -rf /var/lib/apt/lists/* - -# Set up virtual environment -RUN python -m venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" - -# Install Python packages -COPY requirements.txt . -RUN pip install --no-cache-dir --upgrade pip && \ - pip install --no-cache-dir -r requirements.txt - -# Copy the application -COPY . . - -# Create necessary directories -RUN mkdir -p static templates/admin logs - -# Create entrypoint script -COPY docker-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/docker-entrypoint.sh - -EXPOSE ${PORT_BACKEND} - -ENTRYPOINT ["docker-entrypoint.sh"] -CMD ["python", "main.py"] \ No newline at end of file diff --git a/Dockerfile.macos.prod b/Dockerfile.macos.prod deleted file mode 100644 index 68a3d0a..0000000 --- a/Dockerfile.macos.prod +++ /dev/null @@ -1,38 +0,0 @@ -FROM python:3.11-slim - -WORKDIR /app/backend - -# Install system dependencies -RUN apt-get update && apt-get install -y \ - libreoffice \ - poppler-utils \ - libpq-dev \ - gcc \ - python3-dev \ - postgresql-client \ - curl \ - && rm -rf /var/lib/apt/lists/* - -# Set up virtual environment -RUN python -m venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" - -# Install Python packages -COPY requirements.txt . -RUN pip install --no-cache-dir --upgrade pip && \ - pip install --no-cache-dir -r requirements.txt - -# Copy the application -COPY . . - -# Create necessary directories -RUN mkdir -p static templates/admin logs - -# Create entrypoint script -COPY docker-entrypoint.sh /usr/local/bin/ -RUN chmod +x /usr/local/bin/docker-entrypoint.sh - -EXPOSE ${PORT_BACKEND} - -ENTRYPOINT ["docker-entrypoint.sh"] -CMD ["python", "main.py"] \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 94851ef..0000000 --- a/README.md +++ /dev/null @@ -1,108 +0,0 @@ -The main issues are with system-level dependencies like `libreoffice` and `gcc` which aren't typically managed through conda on macOS. - -```yaml:backend/requirements.conda.yml -name: classroomcopilot-backend -channels: - - conda-forge - - nodefaults -dependencies: - - python=3.11 - # Core dependencies - - pip - - setuptools - - wheel - # Server dependencies - - fastapi - - uvicorn - - python-dotenv - - python-multipart - - python-jose - - pyjwt - - jinja2 - # Database and Auth - - sqlalchemy - - sqlalchemy-utils - - asyncpg - - redis-py - # Neo4j - - neo4j-python-driver - # Data Processing - - pandas - - scipy - - requests - - openpyxl - - scikit-learn - # Testing - - pytest - - pytest-html - # Database clients - - postgresql - - libpq - # Additional dependencies via pip - - pip: - # Supabase - - supabase - # Neo4j specific - - neontology - # Document Processing - - python-pptx - - python-docx - - pdfminer.six - - Pillow - - psutil - # Web Scraping and Processing - - emoji - - extruct - - w3lib - # Google APIs - - youtube-transcript-api - - google-api-python-client - - google-auth-oauthlib - # LangChain Ecosystem - - "langchain[llms]" - - langchain-community - - langchain-openai - - langgraph - # OpenAI - - openai - - ollama - # Microsoft Authentication - - msal -``` -I've made several important changes to make the conda environment more compatible: - -1. Removed system-level dependencies that should be installed via the system package manager: - - `libreoffice` - Install via Homebrew on macOS (`brew install libreoffice`) - - `gcc` - Install via Xcode Command Line Tools on macOS - - `poppler` - Install via Homebrew on macOS (`brew install poppler`) - -2. Changed channel configuration: - - Using only `conda-forge` with `nodefaults` to avoid package conflicts - - This provides better consistency across platforms - -3. Fixed the `langchain[llms]` specification by adding quotes to handle the square brackets properly - -For macOS users, here are the steps to set up the environment: - -1. First, install system dependencies: -```bash -# Install Xcode Command Line Tools (if not already installed) -xcode-select --install - -# Install other system dependencies via Homebrew -brew install libreoffice poppler postgresql -``` - -2. Then create the conda environment: -```bash -conda env create -f backend/requirements.conda.yml -``` - -3. Activate the environment: -```bash -conda activate classroomcopilot-backend -``` - -This setup should now work properly on macOS while still maintaining compatibility with the Docker environment for production. The system-level dependencies are handled by the appropriate system package manager (Homebrew for macOS) rather than conda, which is the recommended approach for these types of dependencies. - -Would you like me to make any additional adjustments to the environment configuration? diff --git a/__pycache__/main.cpython-311.pyc b/__pycache__/main.cpython-311.pyc deleted file mode 100644 index a9bb1c2..0000000 Binary files a/__pycache__/main.cpython-311.pyc and /dev/null differ diff --git a/docker-compose.yml b/docker-compose.yml index 47929cc..d62ff38 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,14 @@ services: backend: - container_name: ccapi + container_name: cc-api build: context: . dockerfile: Dockerfile - env_file: .env + env_file: + - .env + - .env.app.prod ports: - - "${PORT_BACKEND}:${PORT_BACKEND}" + - 8000:8000 networks: - kevlarai-network diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh deleted file mode 100644 index 3599552..0000000 --- a/docker-entrypoint.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -set -e - -# Add backend to Python path -export PYTHONPATH="/app:${PYTHONPATH}" - -# Create init directories -mkdir -p /init - -# Function to check if initialization is needed -check_init_needed() { - if [ ! -f "/init/status.json" ]; then - return 0 - fi - - # Check if any status is incomplete - incomplete=$(python -c " -import json -try: - with open('/init/status.json', 'r') as f: - status = json.load(f) - print(not all(v for k, v in status.items() if k != 'timestamp')) -except (FileNotFoundError, json.JSONDecodeError): - print('True') -") - - if [ "$incomplete" = "True" ]; then - return 0 - else - return 1 - fi -} - -# Run initialization if needed -if check_init_needed; then - echo "Running initialization..." - python -c "from run.initialization import initialize_system; initialize_system()" -else - echo "System already initialized, skipping..." -fi - -# Execute the main command -exec "$@" \ No newline at end of file diff --git a/main.py b/main.py index 7f4d46f..205e10e 100644 --- a/main.py +++ b/main.py @@ -1,4 +1,6 @@ import os +import argparse +import sys from modules.logger_tool import initialise_logger logger = initialise_logger(__name__, os.getenv("LOG_LEVEL"), os.getenv("LOG_PATH"), 'default', True) from fastapi import FastAPI, HTTPException @@ -100,34 +102,94 @@ def initialize_with_retry(max_attempts: int = 3, initial_delay: int = 5) -> bool return False -if __name__ == "__main__": - import uvicorn - import os - - # Run initialization with retry logic - if not initialize_with_retry(): - logger.error("Failed to initialize system after multiple attempts") - # Continue anyway to allow the API to start and handle health checks - - if os.getenv('BACKEND_DEV_MODE') == 'true': - logger.info("Running with Reload") - uvicorn.run( - "main:app", - host="0.0.0.0", - port=int(os.getenv('PORT_BACKEND', 8000)), - log_level="info", - proxy_headers=True, - timeout_keep_alive=10, - reload=True - ) +def run_initialization_mode(): + """Run only the initialization process""" + logger.info("Running in initialization mode") + logger.info("Starting system initialization...") + + if initialize_with_retry(): + logger.info("Initialization completed successfully") + return True else: - logger.info("Running without Reload and without SSL (behind reverse proxy)") - uvicorn.run( - "main:app", - host="0.0.0.0", - port=int(os.getenv('PORT_BACKEND', 8000)), # <-- not 443 - log_level="info", - proxy_headers=True, - timeout_keep_alive=10, - workers=int(os.getenv('UVICORN_WORKERS', '1')) + logger.error("Initialization failed after multiple attempts") + return False + +def run_development_mode(): + """Run the server in development mode with auto-reload""" + logger.info("Running in development mode") + logger.info("Starting uvicorn server with auto-reload...") + + uvicorn.run( + "main:app", + host="0.0.0.0", + port=int(os.getenv('UVICORN_PORT', 8000)), + log_level=os.getenv('LOG_LEVEL', 'info'), + proxy_headers=True, + timeout_keep_alive=10, + reload=True ) + +def run_production_mode(): + """Run the server in production mode""" + logger.info("Running in production mode") + logger.info("Starting uvicorn server in production mode...") + + uvicorn.run( + "main:app", + host="0.0.0.0", + port=int(os.getenv('UVICORN_PORT', 8000)), + log_level=os.getenv('LOG_LEVEL', 'info'), + proxy_headers=True, + timeout_keep_alive=10, + workers=int(os.getenv('UVICORN_WORKERS', '1')) + ) + +def parse_arguments(): + """Parse command line arguments""" + parser = argparse.ArgumentParser( + description="ClassroomCopilot API Server", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Startup modes: + init - Run initialization scripts (database setup, etc.) + dev - Run development server with auto-reload + prod - Run production server (for Docker/containerized deployment) + """ + ) + + parser.add_argument( + '--mode', '-m', + choices=['init', 'dev', 'prod'], + default='dev', + help='Startup mode (default: dev)' + ) + + return parser.parse_args() + +if __name__ == "__main__": + args = parse_arguments() + + # Set environment variable for backward compatibility + if args.mode == 'dev': + os.environ['BACKEND_DEV_MODE'] = 'true' + else: + os.environ['BACKEND_DEV_MODE'] = 'false' + + logger.info(f"Starting ClassroomCopilot API in {args.mode} mode") + + if args.mode == 'init': + # Run initialization only + success = run_initialization_mode() + sys.exit(0 if success else 1) + + elif args.mode == 'dev': + # Run development server + run_development_mode() + + elif args.mode == 'prod': + # Run production server + run_production_mode() + + else: + logger.error(f"Invalid mode: {args.mode}") + sys.exit(1) diff --git a/modules/__pycache__/__init__.cpython-311.pyc b/modules/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 3ead5b3..0000000 Binary files a/modules/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/__pycache__/document_processor.cpython-311.pyc b/modules/__pycache__/document_processor.cpython-311.pyc deleted file mode 100644 index 757c672..0000000 Binary files a/modules/__pycache__/document_processor.cpython-311.pyc and /dev/null differ diff --git a/modules/__pycache__/logger_tool.cpython-311.pyc b/modules/__pycache__/logger_tool.cpython-311.pyc deleted file mode 100644 index b2bb540..0000000 Binary files a/modules/__pycache__/logger_tool.cpython-311.pyc and /dev/null differ diff --git a/modules/__pycache__/pdf_utils.cpython-311.pyc b/modules/__pycache__/pdf_utils.cpython-311.pyc deleted file mode 100644 index 7573fad..0000000 Binary files a/modules/__pycache__/pdf_utils.cpython-311.pyc and /dev/null differ diff --git a/modules/__pycache__/redis_config.cpython-311.pyc b/modules/__pycache__/redis_config.cpython-311.pyc deleted file mode 100644 index 49aec9d..0000000 Binary files a/modules/__pycache__/redis_config.cpython-311.pyc and /dev/null differ diff --git a/modules/__pycache__/test_analyzer.cpython-311.pyc b/modules/__pycache__/test_analyzer.cpython-311.pyc deleted file mode 100644 index ec4a7bd..0000000 Binary files a/modules/__pycache__/test_analyzer.cpython-311.pyc and /dev/null differ diff --git a/modules/database/__pycache__/__init__.cpython-311.pyc b/modules/database/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 7587478..0000000 Binary files a/modules/database/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/admin/__pycache__/__init__.cpython-311.pyc b/modules/database/admin/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index e013d90..0000000 Binary files a/modules/database/admin/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/admin/__pycache__/graph_provider.cpython-311.pyc b/modules/database/admin/__pycache__/graph_provider.cpython-311.pyc deleted file mode 100644 index 49d60fc..0000000 Binary files a/modules/database/admin/__pycache__/graph_provider.cpython-311.pyc and /dev/null differ diff --git a/modules/database/admin/__pycache__/neontology_provider.cpython-311.pyc b/modules/database/admin/__pycache__/neontology_provider.cpython-311.pyc deleted file mode 100644 index 04a59dc..0000000 Binary files a/modules/database/admin/__pycache__/neontology_provider.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/__init__.cpython-311.pyc b/modules/database/init/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index bb9941b..0000000 Binary files a/modules/database/init/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/init_calendar.cpython-311.pyc b/modules/database/init/__pycache__/init_calendar.cpython-311.pyc deleted file mode 100644 index 79b71f3..0000000 Binary files a/modules/database/init/__pycache__/init_calendar.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/init_school.cpython-311.pyc b/modules/database/init/__pycache__/init_school.cpython-311.pyc deleted file mode 100644 index 0634cac..0000000 Binary files a/modules/database/init/__pycache__/init_school.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/init_school_curriculum.cpython-311.pyc b/modules/database/init/__pycache__/init_school_curriculum.cpython-311.pyc deleted file mode 100644 index 8694309..0000000 Binary files a/modules/database/init/__pycache__/init_school_curriculum.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/init_school_timetable.cpython-311.pyc b/modules/database/init/__pycache__/init_school_timetable.cpython-311.pyc deleted file mode 100644 index 26e0ca0..0000000 Binary files a/modules/database/init/__pycache__/init_school_timetable.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/init_user.cpython-311.pyc b/modules/database/init/__pycache__/init_user.cpython-311.pyc deleted file mode 100644 index 6a98df0..0000000 Binary files a/modules/database/init/__pycache__/init_user.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/init_worker_timetable.cpython-311.pyc b/modules/database/init/__pycache__/init_worker_timetable.cpython-311.pyc deleted file mode 100644 index f89e323..0000000 Binary files a/modules/database/init/__pycache__/init_worker_timetable.cpython-311.pyc and /dev/null differ diff --git a/modules/database/init/__pycache__/xl_tools.cpython-311.pyc b/modules/database/init/__pycache__/xl_tools.cpython-311.pyc deleted file mode 100644 index 1c8d264..0000000 Binary files a/modules/database/init/__pycache__/xl_tools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/__pycache__/__init__.cpython-311.pyc b/modules/database/schemas/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index a254fd4..0000000 Binary files a/modules/database/schemas/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/__pycache__/entities.cpython-311.pyc b/modules/database/schemas/__pycache__/entities.cpython-311.pyc deleted file mode 100644 index aa3a537..0000000 Binary files a/modules/database/schemas/__pycache__/entities.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/__pycache__/owners.cpython-311.pyc b/modules/database/schemas/__pycache__/owners.cpython-311.pyc deleted file mode 100644 index bc0d0c5..0000000 Binary files a/modules/database/schemas/__pycache__/owners.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/__pycache__/structures.cpython-311.pyc b/modules/database/schemas/__pycache__/structures.cpython-311.pyc deleted file mode 100644 index 8b97148..0000000 Binary files a/modules/database/schemas/__pycache__/structures.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/__pycache__/__init__.cpython-311.pyc b/modules/database/schemas/nodes/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index cf7098b..0000000 Binary files a/modules/database/schemas/nodes/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/__pycache__/base_nodes.cpython-311.pyc b/modules/database/schemas/nodes/__pycache__/base_nodes.cpython-311.pyc deleted file mode 100644 index 2a31523..0000000 Binary files a/modules/database/schemas/nodes/__pycache__/base_nodes.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/__pycache__/calendars.cpython-311.pyc b/modules/database/schemas/nodes/__pycache__/calendars.cpython-311.pyc deleted file mode 100644 index a319395..0000000 Binary files a/modules/database/schemas/nodes/__pycache__/calendars.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/__pycache__/users.cpython-311.pyc b/modules/database/schemas/nodes/__pycache__/users.cpython-311.pyc deleted file mode 100644 index 893d1cb..0000000 Binary files a/modules/database/schemas/nodes/__pycache__/users.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/schools/__pycache__/__init__.cpython-311.pyc b/modules/database/schemas/nodes/schools/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 7e76dcb..0000000 Binary files a/modules/database/schemas/nodes/schools/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/schools/__pycache__/curriculum.cpython-311.pyc b/modules/database/schemas/nodes/schools/__pycache__/curriculum.cpython-311.pyc deleted file mode 100644 index ce8c0b6..0000000 Binary files a/modules/database/schemas/nodes/schools/__pycache__/curriculum.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/schools/__pycache__/pastoral.cpython-311.pyc b/modules/database/schemas/nodes/schools/__pycache__/pastoral.cpython-311.pyc deleted file mode 100644 index 77955ff..0000000 Binary files a/modules/database/schemas/nodes/schools/__pycache__/pastoral.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/schools/__pycache__/schools.cpython-311.pyc b/modules/database/schemas/nodes/schools/__pycache__/schools.cpython-311.pyc deleted file mode 100644 index 70a5019..0000000 Binary files a/modules/database/schemas/nodes/schools/__pycache__/schools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/schools/__pycache__/timetable.cpython-311.pyc b/modules/database/schemas/nodes/schools/__pycache__/timetable.cpython-311.pyc deleted file mode 100644 index 2e879e3..0000000 Binary files a/modules/database/schemas/nodes/schools/__pycache__/timetable.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/structures/__pycache__/__init__.cpython-311.pyc b/modules/database/schemas/nodes/structures/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 2548b29..0000000 Binary files a/modules/database/schemas/nodes/structures/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/structures/__pycache__/schools.cpython-311.pyc b/modules/database/schemas/nodes/structures/__pycache__/schools.cpython-311.pyc deleted file mode 100644 index 7f7152a..0000000 Binary files a/modules/database/schemas/nodes/structures/__pycache__/schools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/structures/__pycache__/users.cpython-311.pyc b/modules/database/schemas/nodes/structures/__pycache__/users.cpython-311.pyc deleted file mode 100644 index c58ac17..0000000 Binary files a/modules/database/schemas/nodes/structures/__pycache__/users.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/structures/__pycache__/workers.cpython-311.pyc b/modules/database/schemas/nodes/structures/__pycache__/workers.cpython-311.pyc deleted file mode 100644 index 584d030..0000000 Binary files a/modules/database/schemas/nodes/structures/__pycache__/workers.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/workers/__pycache__/__init__.cpython-311.pyc b/modules/database/schemas/nodes/workers/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index c77f83a..0000000 Binary files a/modules/database/schemas/nodes/workers/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/workers/__pycache__/timetable.cpython-311.pyc b/modules/database/schemas/nodes/workers/__pycache__/timetable.cpython-311.pyc deleted file mode 100644 index ca4a8ef..0000000 Binary files a/modules/database/schemas/nodes/workers/__pycache__/timetable.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/nodes/workers/__pycache__/workers.cpython-311.pyc b/modules/database/schemas/nodes/workers/__pycache__/workers.cpython-311.pyc deleted file mode 100644 index a04be64..0000000 Binary files a/modules/database/schemas/nodes/workers/__pycache__/workers.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/__init__.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 9e6c53f..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/calendar_sequence.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/calendar_sequence.cpython-311.pyc deleted file mode 100644 index 11f7e2a..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/calendar_sequence.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/calendar_timetable_rels.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/calendar_timetable_rels.cpython-311.pyc deleted file mode 100644 index 6b157b6..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/calendar_timetable_rels.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/calendars.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/calendars.cpython-311.pyc deleted file mode 100644 index a4c6fe1..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/calendars.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/curriculum_relationships.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/curriculum_relationships.cpython-311.pyc deleted file mode 100644 index ef1b58d..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/curriculum_relationships.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/entity_curriculum_rels.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/entity_curriculum_rels.cpython-311.pyc deleted file mode 100644 index 5d9b188..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/entity_curriculum_rels.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/entity_relationships.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/entity_relationships.cpython-311.pyc deleted file mode 100644 index 78a6c6e..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/entity_relationships.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/entity_timetable_rels.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/entity_timetable_rels.cpython-311.pyc deleted file mode 100644 index b6a5f35..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/entity_timetable_rels.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/owner_relationships.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/owner_relationships.cpython-311.pyc deleted file mode 100644 index 3139b32..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/owner_relationships.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/planning_relationships.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/planning_relationships.cpython-311.pyc deleted file mode 100644 index e241462..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/planning_relationships.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/__pycache__/timetables.cpython-311.pyc b/modules/database/schemas/relationships/__pycache__/timetables.cpython-311.pyc deleted file mode 100644 index 28b54d1..0000000 Binary files a/modules/database/schemas/relationships/__pycache__/timetables.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/structures/__pycache__/__init__.cpython-311.pyc b/modules/database/schemas/relationships/structures/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index f49ea22..0000000 Binary files a/modules/database/schemas/relationships/structures/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/schemas/relationships/structures/__pycache__/schools.cpython-311.pyc b/modules/database/schemas/relationships/structures/__pycache__/schools.cpython-311.pyc deleted file mode 100644 index ebe388c..0000000 Binary files a/modules/database/schemas/relationships/structures/__pycache__/schools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/services/__pycache__/__init__.cpython-311.pyc b/modules/database/services/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 84b2c41..0000000 Binary files a/modules/database/services/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/services/__pycache__/admin_service.cpython-311.pyc b/modules/database/services/__pycache__/admin_service.cpython-311.pyc deleted file mode 100644 index ae8c207..0000000 Binary files a/modules/database/services/__pycache__/admin_service.cpython-311.pyc and /dev/null differ diff --git a/modules/database/services/__pycache__/auth_service.cpython-311.pyc b/modules/database/services/__pycache__/auth_service.cpython-311.pyc deleted file mode 100644 index cf96009..0000000 Binary files a/modules/database/services/__pycache__/auth_service.cpython-311.pyc and /dev/null differ diff --git a/modules/database/services/__pycache__/neo4j_service.cpython-311.pyc b/modules/database/services/__pycache__/neo4j_service.cpython-311.pyc deleted file mode 100644 index 2845710..0000000 Binary files a/modules/database/services/__pycache__/neo4j_service.cpython-311.pyc and /dev/null differ diff --git a/modules/database/services/__pycache__/school_admin_service.cpython-311.pyc b/modules/database/services/__pycache__/school_admin_service.cpython-311.pyc deleted file mode 100644 index b9684bb..0000000 Binary files a/modules/database/services/__pycache__/school_admin_service.cpython-311.pyc and /dev/null differ diff --git a/modules/database/supabase/__pycache__/__init__.cpython-311.pyc b/modules/database/supabase/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 85ba1c5..0000000 Binary files a/modules/database/supabase/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/supabase/utils/__pycache__/__init__.cpython-311.pyc b/modules/database/supabase/utils/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index c7933a0..0000000 Binary files a/modules/database/supabase/utils/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/supabase/utils/__pycache__/client.cpython-311.pyc b/modules/database/supabase/utils/__pycache__/client.cpython-311.pyc deleted file mode 100644 index deb3c8d..0000000 Binary files a/modules/database/supabase/utils/__pycache__/client.cpython-311.pyc and /dev/null differ diff --git a/modules/database/supabase/utils/__pycache__/storage.cpython-311.pyc b/modules/database/supabase/utils/__pycache__/storage.cpython-311.pyc deleted file mode 100644 index 27fc1ad..0000000 Binary files a/modules/database/supabase/utils/__pycache__/storage.cpython-311.pyc and /dev/null differ diff --git a/modules/database/supabase/utils/client.py b/modules/database/supabase/utils/client.py index 02c78bf..874bd89 100644 --- a/modules/database/supabase/utils/client.py +++ b/modules/database/supabase/utils/client.py @@ -2,7 +2,7 @@ import os from typing import Dict, Optional, Any, TypedDict, List from supabase import create_client, Client from supabase.lib.client_options import SyncClientOptions -from gotrue import SyncMemoryStorage +from supabase_auth import SyncMemoryStorage from modules.logger_tool import initialise_logger logger = initialise_logger(__name__, os.getenv("LOG_LEVEL"), os.getenv("LOG_PATH"), 'default', True) diff --git a/modules/database/tools/__pycache__/__init__.cpython-311.pyc b/modules/database/tools/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index e160e70..0000000 Binary files a/modules/database/tools/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/__pycache__/filesystem_tools.cpython-311.pyc b/modules/database/tools/__pycache__/filesystem_tools.cpython-311.pyc deleted file mode 100644 index 15bfbe7..0000000 Binary files a/modules/database/tools/__pycache__/filesystem_tools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/__pycache__/neo4j_db_formatter.cpython-311.pyc b/modules/database/tools/__pycache__/neo4j_db_formatter.cpython-311.pyc deleted file mode 100644 index 835b90b..0000000 Binary files a/modules/database/tools/__pycache__/neo4j_db_formatter.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/__pycache__/neo4j_driver_tools.cpython-311.pyc b/modules/database/tools/__pycache__/neo4j_driver_tools.cpython-311.pyc deleted file mode 100644 index 3e162bd..0000000 Binary files a/modules/database/tools/__pycache__/neo4j_driver_tools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/__pycache__/neo4j_session_tools.cpython-311.pyc b/modules/database/tools/__pycache__/neo4j_session_tools.cpython-311.pyc deleted file mode 100644 index 067f4af..0000000 Binary files a/modules/database/tools/__pycache__/neo4j_session_tools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/__pycache__/neontology_tools.cpython-311.pyc b/modules/database/tools/__pycache__/neontology_tools.cpython-311.pyc deleted file mode 100644 index 05f7b82..0000000 Binary files a/modules/database/tools/__pycache__/neontology_tools.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/__pycache__/queries.cpython-311.pyc b/modules/database/tools/__pycache__/queries.cpython-311.pyc deleted file mode 100644 index 2710a95..0000000 Binary files a/modules/database/tools/__pycache__/queries.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/neontology/__pycache__/__init__.cpython-311.pyc b/modules/database/tools/neontology/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index f45e8b1..0000000 Binary files a/modules/database/tools/neontology/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/neontology/__pycache__/basenode.cpython-311.pyc b/modules/database/tools/neontology/__pycache__/basenode.cpython-311.pyc deleted file mode 100644 index 93a6eac..0000000 Binary files a/modules/database/tools/neontology/__pycache__/basenode.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/neontology/__pycache__/baserelationship.cpython-311.pyc b/modules/database/tools/neontology/__pycache__/baserelationship.cpython-311.pyc deleted file mode 100644 index d89a4d5..0000000 Binary files a/modules/database/tools/neontology/__pycache__/baserelationship.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/neontology/__pycache__/commonmodel.cpython-311.pyc b/modules/database/tools/neontology/__pycache__/commonmodel.cpython-311.pyc deleted file mode 100644 index cd88a3e..0000000 Binary files a/modules/database/tools/neontology/__pycache__/commonmodel.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/neontology/__pycache__/graphconnection.cpython-311.pyc b/modules/database/tools/neontology/__pycache__/graphconnection.cpython-311.pyc deleted file mode 100644 index 5ba929c..0000000 Binary files a/modules/database/tools/neontology/__pycache__/graphconnection.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/neontology/__pycache__/result.cpython-311.pyc b/modules/database/tools/neontology/__pycache__/result.cpython-311.pyc deleted file mode 100644 index ff0a140..0000000 Binary files a/modules/database/tools/neontology/__pycache__/result.cpython-311.pyc and /dev/null differ diff --git a/modules/database/tools/neontology/__pycache__/utils.cpython-311.pyc b/modules/database/tools/neontology/__pycache__/utils.cpython-311.pyc deleted file mode 100644 index fedd301..0000000 Binary files a/modules/database/tools/neontology/__pycache__/utils.cpython-311.pyc and /dev/null differ diff --git a/modules/langchain/__pycache__/__init__.cpython-311.pyc b/modules/langchain/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 18e7ef6..0000000 Binary files a/modules/langchain/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/modules/langchain/__pycache__/interactive_langgraph_query.cpython-311.pyc b/modules/langchain/__pycache__/interactive_langgraph_query.cpython-311.pyc deleted file mode 100644 index 7d07dd6..0000000 Binary files a/modules/langchain/__pycache__/interactive_langgraph_query.cpython-311.pyc and /dev/null differ diff --git a/modules/logger_tool.py b/modules/logger_tool.py index 7aa7907..730150e 100644 --- a/modules/logger_tool.py +++ b/modules/logger_tool.py @@ -2,7 +2,11 @@ import os import sys import logging import datetime -import pytest +try: + import pytest + PYTEST_AVAILABLE = True +except ImportError: + PYTEST_AVAILABLE = False from dotenv import load_dotenv, find_dotenv # Load environment variables @@ -86,17 +90,22 @@ class FileFormatter(logging.Formatter): return logging.Formatter(LOG_FORMAT).format(record) class PytestFormatter: - @pytest.hookimpl(hookwrapper=True) - def pytest_runtest_makereport(self, item, call): - outcome = yield - report = outcome.get_result() - if report.when == "call": - if report.passed: - logging.success(f"✅ Test passed: {item.name}") - elif report.failed: - logging.error(f"❌ Test failed: {item.name}") - elif report.skipped: - logging.warning(f"⏭️ Test skipped: {item.name}") + if PYTEST_AVAILABLE: + @pytest.hookimpl(hookwrapper=True) + def pytest_runtest_makereport(self, item, call): + outcome = yield + report = outcome.get_result() + if report.when == "call": + if report.passed: + logging.success(f"✅ Test passed: {item.name}") + elif report.failed: + logging.error(f"❌ Test failed: {item.name}") + elif report.skipped: + logging.warning(f"⏭️ Test skipped: {item.name}") + else: + # Dummy implementation when pytest is not available + def pytest_runtest_makereport(self, item, call): + pass # Custom logger methods def _add_custom_log_methods(): diff --git a/requirements.conda.yml b/requirements.conda.yml deleted file mode 100644 index d60f290..0000000 --- a/requirements.conda.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: classroomcopilot-backend -channels: - - conda-forge - - nodefaults -dependencies: - - python=3.11 - # Core dependencies - - pip - - setuptools - - wheel - # Server dependencies - - fastapi - - uvicorn - - python-dotenv - - python-multipart - - python-jose - - pyjwt - - jinja2 - # Database and Auth - - sqlalchemy - - sqlalchemy-utils - - asyncpg - - redis-py - # Neo4j - - neo4j-python-driver - # HTTP and Async - - aiohttp - # Data Processing - - pandas - - scipy - - requests - - openpyxl - - scikit-learn - # Testing - - pytest - - pytest-html - # Database clients - - postgresql - - libpq - # LibreOffice for document conversion - - libreoffice - # Additional dependencies via pip - - pip: - # Supabase - - supabase - # Neo4j specific - - neontology - # HTTP and Async - - sseclient-py - # Document Processing - - python-pptx - - python-docx - - pdfminer.six - - Pillow - - psutil - - PyPDF2>=3.0.0 - # Web Scraping and Processing - - emoji - - extruct - - w3lib - # Google APIs - - youtube-transcript-api - - google-api-python-client - - google-auth-oauthlib - # LangChain Ecosystem - - "langchain[llms]" - - langchain-community - - langchain-openai - - langgraph - # OpenAI - - openai - - ollama - # Microsoft Authentication - - msal diff --git a/requirements.txt b/requirements.txt index 39e023c..29841fc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,6 +13,7 @@ jinja2 # Database and Auth supabase +supabase_auth sqlalchemy sqlalchemy-utils asyncpg diff --git a/routers/__pycache__/__init__.cpython-311.pyc b/routers/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 64b5c55..0000000 Binary files a/routers/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/__pycache__/admin_routes.cpython-311.pyc b/routers/__pycache__/admin_routes.cpython-311.pyc deleted file mode 100644 index 3cf302f..0000000 Binary files a/routers/__pycache__/admin_routes.cpython-311.pyc and /dev/null differ diff --git a/routers/__pycache__/auth.cpython-311.pyc b/routers/__pycache__/auth.cpython-311.pyc deleted file mode 100644 index 313a94e..0000000 Binary files a/routers/__pycache__/auth.cpython-311.pyc and /dev/null differ diff --git a/routers/__pycache__/health.cpython-311.pyc b/routers/__pycache__/health.cpython-311.pyc deleted file mode 100644 index 64b43ae..0000000 Binary files a/routers/__pycache__/health.cpython-311.pyc and /dev/null differ diff --git a/routers/assets/__pycache__/pdf.cpython-311.pyc b/routers/assets/__pycache__/pdf.cpython-311.pyc deleted file mode 100644 index 507643a..0000000 Binary files a/routers/assets/__pycache__/pdf.cpython-311.pyc and /dev/null differ diff --git a/routers/assets/__pycache__/powerpoint.cpython-311.pyc b/routers/assets/__pycache__/powerpoint.cpython-311.pyc deleted file mode 100644 index 6148173..0000000 Binary files a/routers/assets/__pycache__/powerpoint.cpython-311.pyc and /dev/null differ diff --git a/routers/assets/__pycache__/word.cpython-311.pyc b/routers/assets/__pycache__/word.cpython-311.pyc deleted file mode 100644 index ec0a3e6..0000000 Binary files a/routers/assets/__pycache__/word.cpython-311.pyc and /dev/null differ diff --git a/routers/connections/__pycache__/__init__.cpython-311.pyc b/routers/connections/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 97fe55b..0000000 Binary files a/routers/connections/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/connections/__pycache__/arbor_router.cpython-311.pyc b/routers/connections/__pycache__/arbor_router.cpython-311.pyc deleted file mode 100644 index f5ecf9c..0000000 Binary files a/routers/connections/__pycache__/arbor_router.cpython-311.pyc and /dev/null differ diff --git a/routers/database/__pycache__/__init__.cpython-311.pyc b/routers/database/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 91e8fda..0000000 Binary files a/routers/database/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/database/init/__pycache__/__init__.cpython-311.pyc b/routers/database/init/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index f0daf5a..0000000 Binary files a/routers/database/init/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/database/init/__pycache__/calendar.cpython-311.pyc b/routers/database/init/__pycache__/calendar.cpython-311.pyc deleted file mode 100644 index 31fa158..0000000 Binary files a/routers/database/init/__pycache__/calendar.cpython-311.pyc and /dev/null differ diff --git a/routers/database/init/__pycache__/curriculum.cpython-311.pyc b/routers/database/init/__pycache__/curriculum.cpython-311.pyc deleted file mode 100644 index a619b2c..0000000 Binary files a/routers/database/init/__pycache__/curriculum.cpython-311.pyc and /dev/null differ diff --git a/routers/database/init/__pycache__/entity_init.cpython-311.pyc b/routers/database/init/__pycache__/entity_init.cpython-311.pyc deleted file mode 100644 index ed0d949..0000000 Binary files a/routers/database/init/__pycache__/entity_init.cpython-311.pyc and /dev/null differ diff --git a/routers/database/init/__pycache__/get_data.cpython-311.pyc b/routers/database/init/__pycache__/get_data.cpython-311.pyc deleted file mode 100644 index 20d6685..0000000 Binary files a/routers/database/init/__pycache__/get_data.cpython-311.pyc and /dev/null differ diff --git a/routers/database/init/__pycache__/schools.cpython-311.pyc b/routers/database/init/__pycache__/schools.cpython-311.pyc deleted file mode 100644 index d63cadb..0000000 Binary files a/routers/database/init/__pycache__/schools.cpython-311.pyc and /dev/null differ diff --git a/routers/database/init/__pycache__/timetables.cpython-311.pyc b/routers/database/init/__pycache__/timetables.cpython-311.pyc deleted file mode 100644 index 1598fbd..0000000 Binary files a/routers/database/init/__pycache__/timetables.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/__init__.cpython-311.pyc b/routers/database/tools/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 535f516..0000000 Binary files a/routers/database/tools/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/calendar_structure_router.cpython-311.pyc b/routers/database/tools/__pycache__/calendar_structure_router.cpython-311.pyc deleted file mode 100644 index be7bf5a..0000000 Binary files a/routers/database/tools/__pycache__/calendar_structure_router.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/default_nodes_router.cpython-311.pyc b/routers/database/tools/__pycache__/default_nodes_router.cpython-311.pyc deleted file mode 100644 index 57b0515..0000000 Binary files a/routers/database/tools/__pycache__/default_nodes_router.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/get_events.cpython-311.pyc b/routers/database/tools/__pycache__/get_events.cpython-311.pyc deleted file mode 100644 index bbb31c9..0000000 Binary files a/routers/database/tools/__pycache__/get_events.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/get_nodes.cpython-311.pyc b/routers/database/tools/__pycache__/get_nodes.cpython-311.pyc deleted file mode 100644 index 66ac8d9..0000000 Binary files a/routers/database/tools/__pycache__/get_nodes.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/get_nodes_and_edges.cpython-311.pyc b/routers/database/tools/__pycache__/get_nodes_and_edges.cpython-311.pyc deleted file mode 100644 index 2b30e79..0000000 Binary files a/routers/database/tools/__pycache__/get_nodes_and_edges.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/tldraw_filesystem.cpython-311.pyc b/routers/database/tools/__pycache__/tldraw_filesystem.cpython-311.pyc deleted file mode 100644 index e7cc29f..0000000 Binary files a/routers/database/tools/__pycache__/tldraw_filesystem.cpython-311.pyc and /dev/null differ diff --git a/routers/database/tools/__pycache__/worker_structure_router.cpython-311.pyc b/routers/database/tools/__pycache__/worker_structure_router.cpython-311.pyc deleted file mode 100644 index de5d4f1..0000000 Binary files a/routers/database/tools/__pycache__/worker_structure_router.cpython-311.pyc and /dev/null differ diff --git a/routers/dev/__pycache__/__init__.cpython-311.pyc b/routers/dev/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 0a32b43..0000000 Binary files a/routers/dev/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/dev/__pycache__/document_conversion.cpython-311.pyc b/routers/dev/__pycache__/document_conversion.cpython-311.pyc deleted file mode 100644 index 21c9e8e..0000000 Binary files a/routers/dev/__pycache__/document_conversion.cpython-311.pyc and /dev/null differ diff --git a/routers/dev/__pycache__/test_analysis.cpython-311.pyc b/routers/dev/__pycache__/test_analysis.cpython-311.pyc deleted file mode 100644 index 47d0cf8..0000000 Binary files a/routers/dev/__pycache__/test_analysis.cpython-311.pyc and /dev/null differ diff --git a/routers/dev/tests/__pycache__/__init__.cpython-311.pyc b/routers/dev/tests/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index aa61319..0000000 Binary files a/routers/dev/tests/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/dev/tests/__pycache__/timetable_test.cpython-311.pyc b/routers/dev/tests/__pycache__/timetable_test.cpython-311.pyc deleted file mode 100644 index f22a6e2..0000000 Binary files a/routers/dev/tests/__pycache__/timetable_test.cpython-311.pyc and /dev/null differ diff --git a/routers/external/__pycache__/__init__.cpython-311.pyc b/routers/external/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 7df57b9..0000000 Binary files a/routers/external/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/external/__pycache__/youtube.cpython-311.pyc b/routers/external/__pycache__/youtube.cpython-311.pyc deleted file mode 100644 index fdee903..0000000 Binary files a/routers/external/__pycache__/youtube.cpython-311.pyc and /dev/null differ diff --git a/routers/langchain/__pycache__/__init__.cpython-311.pyc b/routers/langchain/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index e7400a4..0000000 Binary files a/routers/langchain/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/langchain/__pycache__/interactive_langgraph_query.cpython-311.pyc b/routers/langchain/__pycache__/interactive_langgraph_query.cpython-311.pyc deleted file mode 100644 index 83bee40..0000000 Binary files a/routers/langchain/__pycache__/interactive_langgraph_query.cpython-311.pyc and /dev/null differ diff --git a/routers/langchain/__pycache__/neo4j_graph_qa.cpython-311.pyc b/routers/langchain/__pycache__/neo4j_graph_qa.cpython-311.pyc deleted file mode 100644 index 28f06ab..0000000 Binary files a/routers/langchain/__pycache__/neo4j_graph_qa.cpython-311.pyc and /dev/null differ diff --git a/routers/llm/private/__pycache__/__init__.cpython-311.pyc b/routers/llm/private/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 6858fa0..0000000 Binary files a/routers/llm/private/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/llm/private/ollama/__pycache__/__init__.cpython-311.pyc b/routers/llm/private/ollama/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 9664857..0000000 Binary files a/routers/llm/private/ollama/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/llm/private/ollama/__pycache__/ollama.cpython-311.pyc b/routers/llm/private/ollama/__pycache__/ollama.cpython-311.pyc deleted file mode 100644 index 228eec2..0000000 Binary files a/routers/llm/private/ollama/__pycache__/ollama.cpython-311.pyc and /dev/null differ diff --git a/routers/llm/private/ollama/__pycache__/ollama_wrapper.cpython-311.pyc b/routers/llm/private/ollama/__pycache__/ollama_wrapper.cpython-311.pyc deleted file mode 100644 index bb87419..0000000 Binary files a/routers/llm/private/ollama/__pycache__/ollama_wrapper.cpython-311.pyc and /dev/null differ diff --git a/routers/llm/public/__pycache__/__init__.cpython-311.pyc b/routers/llm/public/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index fb23a30..0000000 Binary files a/routers/llm/public/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/llm/public/openai/__pycache__/__init__.cpython-311.pyc b/routers/llm/public/openai/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 654ecdd..0000000 Binary files a/routers/llm/public/openai/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/llm/public/openai/__pycache__/openai.cpython-311.pyc b/routers/llm/public/openai/__pycache__/openai.cpython-311.pyc deleted file mode 100644 index 36ca56b..0000000 Binary files a/routers/llm/public/openai/__pycache__/openai.cpython-311.pyc and /dev/null differ diff --git a/routers/msgraph/__pycache__/__init__.cpython-311.pyc b/routers/msgraph/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index b82ade5..0000000 Binary files a/routers/msgraph/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/msgraph/__pycache__/router_onenote.cpython-311.pyc b/routers/msgraph/__pycache__/router_onenote.cpython-311.pyc deleted file mode 100644 index b926f81..0000000 Binary files a/routers/msgraph/__pycache__/router_onenote.cpython-311.pyc and /dev/null differ diff --git a/routers/rpi/__pycache__/rpi_whisperlive_client.cpython-311.pyc b/routers/rpi/__pycache__/rpi_whisperlive_client.cpython-311.pyc deleted file mode 100644 index e813acd..0000000 Binary files a/routers/rpi/__pycache__/rpi_whisperlive_client.cpython-311.pyc and /dev/null differ diff --git a/routers/solid/__pycache__/__init__.cpython-311.pyc b/routers/solid/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index ac6a814..0000000 Binary files a/routers/solid/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/routers/solid/__pycache__/pod_provisioner.cpython-311.pyc b/routers/solid/__pycache__/pod_provisioner.cpython-311.pyc deleted file mode 100644 index f0845c2..0000000 Binary files a/routers/solid/__pycache__/pod_provisioner.cpython-311.pyc and /dev/null differ diff --git a/run/__pycache__/__init__.cpython-311.pyc b/run/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index d82920b..0000000 Binary files a/run/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/run/__pycache__/routers.cpython-311.pyc b/run/__pycache__/routers.cpython-311.pyc deleted file mode 100644 index 9af8705..0000000 Binary files a/run/__pycache__/routers.cpython-311.pyc and /dev/null differ diff --git a/run/__pycache__/setup.cpython-311.pyc b/run/__pycache__/setup.cpython-311.pyc deleted file mode 100644 index 4a67832..0000000 Binary files a/run/__pycache__/setup.cpython-311.pyc and /dev/null differ diff --git a/run/initialization/__pycache__/__init__.cpython-311.pyc b/run/initialization/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 677b3ae..0000000 Binary files a/run/initialization/__pycache__/__init__.cpython-311.pyc and /dev/null differ diff --git a/run/initialization/__pycache__/initialization.cpython-311.pyc b/run/initialization/__pycache__/initialization.cpython-311.pyc deleted file mode 100644 index 1a12c72..0000000 Binary files a/run/initialization/__pycache__/initialization.cpython-311.pyc and /dev/null differ diff --git a/run/initialization/__pycache__/manager.cpython-311.pyc b/run/initialization/__pycache__/manager.cpython-311.pyc deleted file mode 100644 index 937c279..0000000 Binary files a/run/initialization/__pycache__/manager.cpython-311.pyc and /dev/null differ diff --git a/run/initialization/manager.py b/run/initialization/manager.py index b3f84eb..e09c999 100644 --- a/run/initialization/manager.py +++ b/run/initialization/manager.py @@ -12,7 +12,7 @@ logger = initialise_logger(__name__, os.getenv("LOG_LEVEL"), os.getenv("LOG_PATH class InitializationManager: def __init__(self): - self.init_dir = "/init" + self.init_dir = os.getenv("BACKEND_INIT_PATH") self.status_file = os.path.join(self.init_dir, "status.json") self.data_dir = os.path.join(self.init_dir, "data") self.supabase_url = os.getenv("SUPABASE_URL") diff --git a/scripts/init_database.py b/scripts/init_database.py new file mode 100644 index 0000000..490be28 --- /dev/null +++ b/scripts/init_database.py @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 +""" +Database Initialization Script +This script handles complex database initialization tasks +""" + +import os +import sys +import logging +from pathlib import Path + +# Add the parent directory to the path so we can import modules +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from modules.logger_tool import initialise_logger +from run.initialization import initialize_system + +def main(): + """Main initialization function""" + logger = initialise_logger(__name__, os.getenv("LOG_LEVEL"), os.getenv("LOG_PATH"), 'default', True) + + logger.info("Starting database initialization script") + + try: + # Run the main initialization system + initialize_system() + logger.info("Database initialization completed successfully") + return True + except Exception as e: + logger.error(f"Database initialization failed: {str(e)}") + return False + +if __name__ == "__main__": + success = main() + sys.exit(0 if success else 1) diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..ff629c1 --- /dev/null +++ b/start.sh @@ -0,0 +1,183 @@ +#!/bin/bash + +# ClassroomCopilot Startup Script +# Usage: ./start.sh [start_mode] +# start_mode options: init, dev, prod + +set -e + +# Function to show help +show_help() { + echo "ClassroomCopilot Startup Script" + echo "" + echo "Usage: ./start.sh [start_mode]" + echo "" + echo "Start modes:" + echo " init - Run initialization scripts (database setup, etc.)" + echo " dev - Run development server with auto-reload" + echo " prod - Run production server (for Docker/containerized deployment)" + echo "" + echo "Examples:" + echo " ./start.sh # Run in dev mode (default)" + echo " ./start.sh init # Run initialization only" + echo " ./start.sh dev # Run development server" + echo " ./start.sh prod # Run production server" + echo "" + echo "For more information, see README_STARTUP.md" +} + +# Check for help flag +if [[ "$1" == "--help" || "$1" == "-h" || "$1" == "help" ]]; then + show_help + exit 0 +fi + +# Default to dev mode if no argument provided +START_MODE=${1:-dev} + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Function to print colored output +print_status() { + echo -e "${BLUE}[INFO]${NC} $1" +} + +print_success() { + echo -e "${GREEN}[SUCCESS]${NC} $1" +} + +print_warning() { + echo -e "${YELLOW}[WARNING]${NC} $1" +} + +print_error() { + echo -e "${RED}[ERROR]${NC} $1" +} + +# Function to check if Python is available +check_python() { + if command -v python3 &> /dev/null; then + PYTHON_CMD="python3" + elif command -v python &> /dev/null; then + PYTHON_CMD="python" + else + print_error "Python is not installed or not in PATH" + exit 1 + fi + print_status "Using Python: $PYTHON_CMD" +} + +# Function to check if virtual environment is activated +check_venv() { + if [[ "$VIRTUAL_ENV" == "" ]]; then + print_warning "No virtual environment detected. Consider activating one for production use." + else + print_status "Virtual environment activated: $VIRTUAL_ENV" + fi +} + +# Function to check environment variables +check_env() { + if [[ ! -f ".env" ]]; then + print_warning ".env file not found. Make sure environment variables are set." + else + print_status ".env file found" + fi +} + +# Function to run initialization +run_init() { + print_status "Running initialization mode..." + print_status "This will set up databases and initial data structures." + + # Check if we should proceed + read -p "Do you want to continue with initialization? (y/N): " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + print_status "Initialization cancelled." + exit 0 + fi + + print_status "Starting initialization process..." + $PYTHON_CMD main.py --mode init + + if [ $? -eq 0 ]; then + print_success "Initialization completed successfully!" + else + print_error "Initialization failed!" + exit 1 + fi +} + +# Function to run development mode +run_dev() { + print_status "Running development mode..." + print_status "Starting uvicorn server with auto-reload..." + + export BACKEND_DEV_MODE=true + $PYTHON_CMD main.py --mode dev + + if [ $? -eq 0 ]; then + print_success "Development server stopped successfully!" + else + print_error "Development server failed!" + exit 1 + fi +} + +# Function to run production mode +run_prod() { + print_status "Running production mode..." + print_status "Starting uvicorn server in production mode..." + + export BACKEND_DEV_MODE=false + $PYTHON_CMD main.py --mode prod + + if [ $? -eq 0 ]; then + print_success "Production server stopped successfully!" + else + print_error "Production server failed!" + exit 1 + fi +} + +# Main execution +main() { + print_status "ClassroomCopilot Startup Script" + print_status "Start mode: $START_MODE" + echo + + # Pre-flight checks + check_python + check_venv + check_env + echo + + # Execute based on start mode + case $START_MODE in + "init") + run_init + ;; + "dev") + run_dev + ;; + "prod") + run_prod + ;; + *) + print_error "Invalid start mode: $START_MODE" + print_status "Valid modes: init, dev, prod" + print_status "Usage: ./start.sh [start_mode]" + print_status "Use './start.sh --help' for more information" + exit 1 + ;; + esac +} + +# Run main function +main "$@" diff --git a/test.txt b/test.txt deleted file mode 100644 index e69de29..0000000