# MYP Platform - Requirements Verwaltung

## Übersicht

Die MYP Platform verwendet verschiedene Requirements-Dateien für unterschiedliche Umgebungen:

- `requirements.txt` - **Basis-Abhängigkeiten basierend auf tatsächlich verwendeten Imports in app.py**
- `requirements-dev.txt` - Entwicklungsabhängigkeiten (Testing, Debugging, etc.)
- `requirements-prod.txt` - Produktionsabhängigkeiten (optimiert für Performance)

## Installation

### Basis-Installation (Empfohlen)

```bash
# Nur die wirklich benötigten Abhängigkeiten installieren
pip install -r requirements.txt
```

### Entwicklungsumgebung

```bash
# Alle Entwicklungsabhängigkeiten installieren
pip install -r requirements-dev.txt
```

### Produktionsumgebung

```bash
# Produktionsabhängigkeiten installieren
pip install -r requirements-prod.txt
```

## Aktualisierte Requirements (Januar 2025)

### Basis-Requirements (requirements.txt)
**Basierend auf tatsächlich verwendeten Imports in app.py:**

#### Core Flask Framework
- **Flask 3.1.1** - Neueste stabile Version
- **Flask-Login 0.6.3** - Benutzer-Authentifizierung
- **Flask-WTF 1.2.1** - CSRF-Schutz und Formulare

#### Datenbank
- **SQLAlchemy 2.0.36** - ORM für Datenbankoperationen

#### Sicherheit
- **Werkzeug 3.1.3** - WSGI-Utilities und Passwort-Hashing
- **bcrypt 4.2.1** - Passwort-Hashing
- **cryptography 44.0.0** - SSL-Zertifikate

#### Smart Plug Steuerung
- **PyP100 0.1.2** - TP-Link Tapo Smart Plugs (neueste verfügbare Version)

#### System & Monitoring
- **psutil 6.1.1** - System-Monitoring
- **redis 5.2.1** - Rate Limiting und Caching
- **requests 2.32.3** - HTTP-Anfragen

#### Template Engine
- **Jinja2 3.1.5** - Template-Rendering
- **MarkupSafe 3.0.2** - Sichere String-Verarbeitung
- **itsdangerous 2.2.0** - Sichere Daten-Serialisierung

#### Zusätzliche Core-Abhängigkeiten
- **click 8.1.8** - CLI-Kommandos
- **blinker 1.9.0** - Flask-Signaling

#### Windows-spezifisch
- **pywin32 308** - Windows-APIs (nur auf Windows)

## Kompatibilität

### Python-Versionen
- **Mindestversion**: Python 3.9
- **Empfohlen**: Python 3.11 oder 3.12
- **Getestet mit**: Python 3.13.3

### Betriebssysteme
- **Windows**: Vollständig unterstützt (mit pywin32)
- **Linux**: Vollständig unterstützt
- **macOS**: Vollständig unterstützt

## Wichtige Änderungen

### Was wurde entfernt
- **Nicht verwendete Pakete**: pandas, numpy, orjson, ujson, structlog
- **Entwicklungstools**: black, flake8, mypy (verschoben nach requirements-dev.txt)
- **Optionale Pakete**: watchdog, python-dotenv, sphinx

### Was wurde beibehalten
- **Nur tatsächlich verwendete Imports** aus app.py und Core-Modulen
- **Kritische Sicherheitspakete** für Produktionsbetrieb
- **Windows-Kompatibilität** für die Zielumgebung

## Installation mit Extras

### Entwicklungstools installieren
```bash
pip install -r requirements.txt
pip install pytest==8.3.4 pytest-cov==6.0.0
```

### Produktionsserver installieren
```bash
pip install -r requirements.txt
pip install gunicorn==23.0.0
```

## Wartung

### Requirements prüfen
```bash
# Installierte Pakete anzeigen
pip list

# Veraltete Pakete prüfen
pip list --outdated

# Abhängigkeitsbaum anzeigen
pip show --verbose Flask
```

### Sicherheitsupdates
```bash
# Sicherheitslücken prüfen (falls safety installiert)
pip install safety
safety check

# Alle Pakete aktualisieren
pip install --upgrade -r requirements.txt
```

## Troubleshooting

### Häufige Probleme

1. **PyP100 Installation**
   - Version 0.1.2 ist die neueste verfügbare Version
   - Bei Problemen: `pip install --no-deps PyP100==0.1.2`

2. **Dependency-Konflikte**
   - flask-caching erfordert Flask<3, aber Flask 3.1.1 ist installiert
   - Lösung: `pip install flask-caching --upgrade` oder entfernen

3. **Windows pywin32**
   - Wird automatisch nur auf Windows installiert
   - Bei Problemen: `pip install --force-reinstall pywin32`

4. **PATH-Warnungen**
   - Scripts werden in User-Verzeichnis installiert
   - Lösung: `--no-warn-script-location` verwenden

### Performance-Tipps

1. **Schnellere Installation**
   ```bash
   pip install --upgrade pip
   pip install -r requirements.txt --no-deps
   ```

2. **Cache nutzen**
   ```bash
   pip install --cache-dir ~/.pip/cache -r requirements.txt
   ```

## Lizenz-Informationen

Alle verwendeten Pakete sind mit der MIT/BSD/Apache-Lizenz kompatibel.

---

**Letzte Aktualisierung**: Januar 2025  
**Basis-Requirements**: Nur tatsächlich verwendete Imports  
**Nächste Überprüfung**: April 2025 