Files
Projektarbeit-MYP/backend/DOCS/unused_imports_detailed.md

8.9 KiB

Detaillierte Liste: Ungenutzte Imports nach Dateien

Hauptdateien (Priorität 1)

app.py (59 ungenutzte Imports) ⚠️ KRITISCH

# Flask-Komponenten (ungenutzt)
from flask import flash, render_template, session, redirect, url_for, abort, send_from_directory

# Flask-Login (redundant/ungenutzt)  
from flask_login import LoginManager, login_required, logout_user, current_user

# Flask-WTF (teilweise ungenutzt)
from flask_wtf import CSRFProtect
from flask_wtf.csrf import CSRFError, generate_csrf

# Blueprint-Imports (viele ungenutzt)
from blueprints.admin_unified import admin_blueprint, admin_api_blueprint
from blueprints.jobs import jobs_blueprint, start_job, pause_job, resume_job, finish_job
from blueprints.printers import printers_blueprint
from blueprints.auth import auth_blueprint
from blueprints.tapo_control import tapo_blueprint
from blueprints.kiosk import kiosk_blueprint
from blueprints.api import api_blueprint
from blueprints.calendar import calendar_blueprint
from blueprints.energy_monitoring import energy_blueprint, energy_api_blueprint
from blueprints.legal_pages import legal_bp
from blueprints.uploads import uploads_blueprint
from blueprints.sessions import sessions_blueprint
from blueprints.user_management import users_blueprint
from blueprints.guest import guest_blueprint

# Utils (viele ungenutzt)
from utils.permissions import fix_all_admin_permissions
from utils.monitoring_analytics import performance_tracker, get_health_check
from utils.hardware_integration import printer_monitor, get_tapo_controller
from utils.security_suite import init_security
from utils.job_queue_system import queue_manager, start_queue_manager, stop_queue_manager
from utils.job_scheduler import JobScheduler, get_job_scheduler
from utils.audit_logger import init_audit_logging
from utils.ssl_suite import ssl_config
from utils.core_system import get_windows_thread_manager
from utils.utilities_collection import SESSION_LIFETIME, SECRET_KEY
from utils.logging_config import setup_logging, log_startup_info, get_logger

# Andere
import uuid
from contextlib import contextmanager  
from sqlalchemy import event

models.py (32 ungenutzte Imports) ⚠️ KRITISCH

# SQLAlchemy-Komponenten (ungenutzt)
from sqlalchemy import Column, Integer, String, Boolean, DateTime, ForeignKey, Float, Text, func
from sqlalchemy.engine import Engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import Mapped, mapped_column, relationship, sessionmaker, Session, scoped_session
from sqlalchemy.pool import QueuePool, StaticPool
from sqlalchemy.create_engine import create_engine
from sqlalchemy import event, text

# Flask-Login (ungenutzt)
from flask_login import UserMixin

# Typing (ungenutzt)
from typing import Optional, List, Dict, Any

# Utils (ungenutzt)
from utils.utilities_collection import ensure_database_directory, DATABASE_PATH
from utils.database_cleanup import get_cleanup_manager
from utils.logging_config import get_logger

# Context Manager (ungenutzt)
from contextlib import contextmanager

Blueprint-Dateien (Priorität 2)

blueprints/jobs.py (17 ungenutzte Imports)

# Models (teilweise ungenutzt)
from models import Printer, JobOrder, GuestRequest, get_cached_session

# Flask (ungenutzt)
from flask import jsonify, Blueprint, request, current_app
from flask_login import login_required, current_user

# Utils (ungenutzt)
from utils.job_scheduler import BackgroundTaskScheduler
from utils.job_queue_system import conflict_manager
from utils.logging_config import get_logger

# SQLAlchemy (ungenutzt)
from sqlalchemy.orm import joinedload

# Andere
import functools

blueprints/guest.py (38 ungenutzte Imports)

# WTForms (viele ungenutzt)
from wtforms.validators import NumberRange, Optional, DataRequired, Email
from wtforms import TextAreaField, IntegerField, StringField, SelectField
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed

# Models (teilweise ungenutzt)
from models import User, Printer, Notification, UserPermission, GuestRequest, get_cached_session

# Flask (viele ungenutzt)
from flask import flash, url_for, jsonify, Blueprint, request, render_template, session, redirect, abort
from flask_login import login_required, current_user

# Utils (ungenutzt)
from utils.permissions import can_approve_jobs, approver_required
from utils.job_scheduler import BackgroundTaskScheduler
from utils.logging_config import get_logger

# Andere
import bcrypt, secrets, functools
from sqlalchemy import desc
from sqlalchemy.orm import joinedload

blueprints/printers.py (25 ungenutzte Imports)

# Models (teilweise ungenutzt)
from models import User, Printer, Job

# Flask (viele ungenutzt)
from flask import jsonify, Blueprint, request, Response, current_app, abort
from flask_login import login_required, current_user

# SQLAlchemy (ungenutzt)
from sqlalchemy import func, desc, asc, exc.SQLAlchemyError

# Werkzeug (ungenutzt)
from werkzeug.utils import secure_filename
from werkzeug.exceptions import NotFound, BadRequest

# Typing (ungenutzt)
from typing import Tuple, List, Dict, Any, Optional

# PyP100 (ungenutzt)
from PyP100 import PyP110

Utils-Dateien (Priorität 3)

utils/utilities_collection.py (8 ungenutzte Imports)

import json
from typing import Optional, List, Dict, Any
from utils.logging_config import get_logger
from models import Printer, get_db_session

utils/hardware_integration.py (20 ungenutzte Imports)

# Typing (ungenutzt)
from typing import Tuple, List, Dict, Any, Optional

# Concurrent (ungenutzt)
from concurrent.futures import ThreadPoolExecutor, as_completed

# Utils (teilweise ungenutzt)
from utils.utilities_collection import TAPO_RETRY_COUNT, TAPO_PASSWORD, TAPO_TIMEOUT, TAPO_USERNAME, DEFAULT_TAPO_IPS
from utils.logging_config import get_logger

# SQLAlchemy (ungenutzt)
from sqlalchemy import func
from sqlalchemy.orm import Session

# Andere
import requests
from flask import session

utils/security_suite.py (16 ungenutzte Imports)

# Flask (teilweise ungenutzt)
from flask import session, g, request, jsonify, abort
from flask_login import current_user, login_required

# Typing (ungenutzt)
from typing import Optional, Set, List, Dict

# Andere
import functools, enum, hashlib, time
from utils.logging_config import get_logger

Test-/Script-Dateien (Priorität 4)

scripts/screenshot_tool.py (20 ungenutzte Imports)

# Selenium (viele ungenutzt)
from selenium.common.exceptions import TimeoutException, WebDriverException, NoSuchElementException
from selenium.webdriver.firefox.service import Service as FirefoxService
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium import webdriver

# Andere
import subprocess
from urllib.parse import urljoin, urlparse
from typing import Set, Tuple, List, Dict, Optional

template_analysis_tool.py (5 ungenutzte Imports)

from typing import Set, Tuple, List, Dict
from pathlib import Path

Empfehlungen pro Datei

Sofort entfernen (sicher):

  1. Alle typing Imports in Dateien ohne Type-Annotations
  2. Ungenutzte Selenium-Imports in screenshot_tool.py
  3. WTForms-Imports in Blueprint-Dateien ohne Formulare
  4. Redundante Flask-Imports wenn bereits an anderer Stelle importiert

Vorsichtig prüfen (möglicherweise Template/String-Referenzen):

  1. Blueprint-Registrierungen in app.py
  2. Model-Imports für SQLAlchemy-Relationships
  3. Flask-Decorator-Imports in Blueprint-Dateien
  4. Utils-Imports die möglicherweise in Templates verwendet werden

Manuell validieren:

  1. app.py: Jeder Import einzeln prüfen
  2. models.py: SQLAlchemy-Imports können für Metadaten erforderlich sein
  3. Admin-Blueprints: Template-Funktionen prüfen

Automatische Bereinigung-Scripts

# 1. Nur sichere typing-Imports entfernen
autoflake --remove-unused-variables --remove-all-unused-imports --ignore-init-module-imports --in-place $(find . -name "*.py" -path "./utils/*" -o -path "./scripts/*")

# 2. Blueprint-Dateien einzeln prüfen
autoflake --remove-all-unused-imports --in-place blueprints/guest.py
# (Nach Test, dann weitere)

# 3. Hauptdateien MANUELL bereinigen
# app.py und models.py erfordern manuelle Überprüfung

Geschätzte Einsparungen

  • app.py: ~59 Zeilen weniger Imports (-50% Import-Sektion)
  • models.py: ~32 Zeilen weniger Imports (-40% Import-Sektion)
  • Blueprints: ~200 Zeilen weniger Imports gesamt
  • Utils: ~150 Zeilen weniger Imports gesamt
  • Scripts/Tests: ~100 Zeilen weniger Imports gesamt

Gesamt: ~541 Zeilen weniger Import-Code, verbesserte Readability und Performance.