Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions HANDBUCH.md
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ Alles andere (Langoptionen wie `--all`, `sudo`, andere Pfade, Reihenfolge von Ar

Laufzeitumgebung (Browser und `pnpm verify` identisch, siehe `src/python/harness.py`):

- Pyodide mit **Python 3.14** und der Standardbibliothek (inklusive `sqlite3`, `json`, `csv`, `re`, `pathlib`, `shutil`, `zipfile`, `hashlib`, `email`, `html.parser`, `xml.etree`, `tomllib`, `unittest.mock`). Zusätzlich verfügbar: `bs4` (BeautifulSoup), `yaml` (PyYAML), `zoneinfo` mit Zeitzonendaten, **pandas 3.0 mit numpy 2.4** sowie **pytest 9.0 und Hypothesis 6.168** (siehe unten). Beim ersten `import pandas` lädt der Browser einmalig etwa 8 MB; das zählt nicht zum Zeitlimit. pandas 3 hat Copy-on-Write und einen eigenen `str`-Datentyp für Text – Beispiele und erwartete Ausgaben müssen dazu passen. `pnpm verify` führt pandas-Code in einer virtuellen Umgebung mit denselben Versionen aus (angelegt mit `uv`). Nicht verfügbar: matplotlib, openpyxl, pyarrow – Code dafür als `python` ohne `run` oder als `practice`.
- Pyodide mit **Python 3.14** und der Standardbibliothek (inklusive `sqlite3`, `json`, `csv`, `re`, `pathlib`, `shutil`, `zipfile`, `hashlib`, `hmac`, `email`, `html.parser`, `xml.etree`, `tomllib`, `logging`, `contextvars`, `unittest.mock`). Zusätzlich verfügbar: `bs4` (BeautifulSoup), `yaml` (PyYAML), `zoneinfo` mit Zeitzonendaten, **pandas 3.0 mit numpy 2.4**, **pytest 9.0 und Hypothesis 6.168** (siehe unten) sowie **openpyxl 3.1** für Excel-Dateien. Beim ersten `import pandas` lädt der Browser einmalig etwa 8 MB, bei openpyxl rund 270 KB; das zählt nicht zum Zeitlimit. pandas 3 hat Copy-on-Write und einen eigenen `str`-Datentyp für Text – Beispiele und erwartete Ausgaben müssen dazu passen. openpyxl rechnet Formeln nicht aus: Eine Formel bleibt Text, `data_only=True` liefert nur Werte, die eine Tabellenkalkulation gespeichert hat. `pnpm verify` führt pandas-, pytest- und openpyxl-Code in einer virtuellen Umgebung mit denselben Versionen aus (angelegt mit `uv`). Nicht verfügbar: matplotlib, pyarrow – Code dafür als `python` ohne `run` oder als `practice`.
- **Nicht verfügbar:** Netzwerk, `subprocess`, Threads (`threading`, `ThreadPoolExecutor`), `multiprocessing`-Prozesse, `input()`. Für diese Themen `explain`, `output` (nur deterministisch), `bug` oder `practice` verwenden – oder die Aufgabe so schneiden, dass die Logik als reine Funktion testbar ist (zum Beispiel eine Funktion, die die Befehlsliste für `subprocess.run` *baut*, oder ein Abrufer, der als Parameter übergeben wird).
- **Async:** Tests dürfen `await` auf oberster Ebene verwenden (`assert await hole(1) == …`). `asyncio.gather`, `TaskGroup`, `asyncio.timeout` und `asyncio.sleep` funktionieren. Niemals `asyncio.run()` im Lernenden-Code oder in Tests aufrufen – im Browser läuft bereits eine Event-Loop.
- Jeder Lauf startet in einem frischen, leeren Arbeitsverzeichnis. `setup` kann dort Dateien anlegen, auch Module: Das Verzeichnis ist importierbar, `from tarif import mietpreis` findet also eine Datei `tarif.py` aus `setup`.
Expand Down Expand Up @@ -782,7 +782,7 @@ pnpm test:e2e # Browser-Tests (Playwright)
pnpm build # TypeScript + Produktionsbuild
```

`pnpm verify` braucht lokal `python3` und `rustc` (Edition 2024), für pandas- und pytest-Code zusätzlich `uv`: Beim ersten Lauf entsteht unter `node_modules/.cache/verify-python/` eine virtuelle Umgebung mit genau den pandas- und numpy-Versionen des Browsers (aus `pyodide-lock.json`) und den pytest- und Hypothesis-Versionen aus `src/python/packages.ts`. TypeScript- und JavaScript-`output` laufen mit dem Node, das auch `pnpm verify` ausführt. SQL prüft `verify` in Pyodide unter Node, also mit derselben SQLite wie im Browser, PostgreSQL mit derselben PGlite-Version wie im Browser. Kotlin wird nicht kompiliert; Kotlin-Aufgaben daher besonders sorgfältig gegen die offizielle Dokumentation prüfen. Excel-Formeln und Power-Query-Code laufen nirgends; sie brauchen besonders sorgfältige Prüfung gegen die Microsoft-Dokumentation.
`pnpm verify` braucht lokal `python3` und `rustc` (Edition 2024), für pandas-, pytest- und openpyxl-Code zusätzlich `uv`: Beim ersten Lauf entsteht unter `node_modules/.cache/verify-python/` eine virtuelle Umgebung mit genau den pandas- und numpy-Versionen des Browsers (aus `pyodide-lock.json`) und den pytest-, Hypothesis- und openpyxl-Versionen aus `src/python/packages.ts`. TypeScript- und JavaScript-`output` laufen mit dem Node, das auch `pnpm verify` ausführt. SQL prüft `verify` in Pyodide unter Node, also mit derselben SQLite wie im Browser, PostgreSQL mit derselben PGlite-Version wie im Browser. Kotlin wird nicht kompiliert; Kotlin-Aufgaben daher besonders sorgfältig gegen die offizielle Dokumentation prüfen. Excel-Formeln und Power-Query-Code laufen nirgends; sie brauchen besonders sorgfältige Prüfung gegen die Microsoft-Dokumentation.

`content:check` und `verify` nehmen auch einzelne Module: `pnpm verify data/sql-joins`. Dann zählen nur Fehler dieses Moduls und der `area.yaml` – praktisch, solange andere Module desselben Bereichs noch entstehen.

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Die Plattform ist kein Nachschlagewerk. Jedes Modul besteht aus einer Lektion, d

## Start

Node.js 24, pnpm 11. Für `pnpm verify` zusätzlich `python3` (3.14), `rustc` (Edition 2024) und `uv` (legt für pandas- und pytest-Übungen eine Umgebung mit den pandas-, numpy-, pytest- und Hypothesis-Versionen des Browsers an), für den Bear-Generator Python 3.
Node.js 24, pnpm 11. Für `pnpm verify` zusätzlich `python3` (3.14), `rustc` (Edition 2024) und `uv` (legt für pandas-, pytest- und Excel-Übungen eine Umgebung mit den pandas-, numpy-, pytest-, Hypothesis- und openpyxl-Versionen des Browsers an), für den Bear-Generator Python 3.

```sh
pnpm install
Expand All @@ -20,7 +20,7 @@ pnpm dev # http://127.0.0.1:5180
| Befehl | Zweck |
| --- | --- |
| `pnpm content:check [bereich[/modul]]` | Inhalte validieren (Pflichtfelder, IDs, Lücken, Richtwerte) |
| `pnpm verify [bereich[/modul]]` | Python-Übungen und -Beispiele ausführen (auch pandas, pytest und Hypothesis), SQL mit der SQLite und dem PostgreSQL des Browsers prüfen, Rust kompilieren, TypeScript-Ausgaben mit Node prüfen, Ausgaben vergleichen, Git-Labore durchspielen |
| `pnpm verify [bereich[/modul]]` | Python-Übungen und -Beispiele ausführen (auch pandas, pytest, Hypothesis und openpyxl), SQL mit der SQLite und dem PostgreSQL des Browsers prüfen, Rust kompilieren, TypeScript-Ausgaben mit Node prüfen, Ausgaben vergleichen, Git-Labore durchspielen |
| `pnpm links [bereich]` | Alle externen Links und Anker prüfen |
| `pnpm test` | Unit-Tests (Prüflogik, Speicher, Bear-Rekonstruktion, Inhalte) |
| `pnpm lint`, `pnpm typecheck` | ESLint und strikte TypeScript-Prüfung einschließlich Backend |
Expand Down Expand Up @@ -75,7 +75,7 @@ src/pages/ Startseite, Bereich, Lektion, Übung, Karten, Wiederh
src/python/ Pyodide-Worker und Harness für Python, pytest und SQLite (dieselbe Harness nutzt pnpm verify), Liste der Test-Pakete
src/pg/ PostgreSQL 18 (PGlite) im Worker: frische Datenbank je Lauf, Ausgabe wie psql (dieselbe Engine nutzen pnpm verify und der Build)
src/vm/ Linux-VM im Browser (v86): Laden, Snapshot, Steuerkanal, Prüfungen, Terminal in Übungen und Lektionen
vendor/pyodide/ Zusätzliche Pyodide-Pakete (tzdata, beautifulsoup4, PyYAML, pandas mit numpy, pytest, Hypothesis)
vendor/pyodide/ Zusätzliche Pyodide-Pakete (tzdata, beautifulsoup4, PyYAML, pandas mit numpy, pytest, Hypothesis, openpyxl mit et_xmlfile)
vendor/vm/ Gebautes Debian-Image samt Snapshot für die Linux-VM
```

Expand Down
22 changes: 13 additions & 9 deletions content/automation/area.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,30 @@ title: Automation mit Python
short: Automation
tagline: Wiederkehrende Arbeit einmal lösen – und dann nie wieder.
description: >
Dateien und Ordner, Kommandozeilen-Werkzeuge, Prozesse, Datenformate,
reguläre Ausdrücke, Web-APIs, Scraping und Browser-Automatisierung,
zeitgesteuerte Jobs, Benachrichtigungen, robuste Fehlerbehandlung,
Deployment mit CI und KI-gestützte Automatisierung.
Dateien und Ordner, Kommandozeilen-Werkzeuge, Prozesse, Datenformate mit Excel,
reguläre Ausdrücke, Web-APIs mit Authentifizierung, Scraping und
Browser-Automatisierung, Postfach und Kalender, zeitgesteuerte Jobs,
Benachrichtigungen, robuste Fehlerbehandlung mit ausführbaren Fehlerfällen,
Logs und Geheimnisse, Deployment mit CI und KI-gestützte Automatisierung.
Module „Am PC“ brauchen einen Rechner, etwa für Playwright; ihre Lektionen
lassen sich auch unterwegs lesen.
color: "#2BD97C"
order: 5
outcomes:
- Du erkennst, was sich zu automatisieren lohnt, und baust Skripte sicher, idempotent und mit Trockenlauf.
- Du automatisierst Dateien, Ordner, Tabellen, JSON, YAML und Excel.
- Du baust saubere Kommandozeilen-Werkzeuge mit argparse oder Typer, Logging und Konfiguration.
- Du sprichst Web-APIs robust an – mit Authentifizierung, Paginierung, Wiederholungen und Rate Limits.
- Du sprichst Web-APIs robust an – mit API-Keys, OAuth 2.0 und Webhook-Signaturen, Paginierung, Wiederholungen und Rate Limits.
- Du liest Postfächer per IMAP, verarbeitest Anhänge sicher und erzeugst Termine als ICS.
- Du planst Jobs mit cron oder systemd-Timern und lässt sie mit GitHub Actions laufen.
- Du setzt LLM-APIs verantwortungsvoll in Automatisierungen ein.
tracks:
- title: Grundlagen
description: Denken wie ein Automatisierer, Dateien, Kommandozeile und externe Programme.
modules: [automatisieren-denken, dateien-ordner, cli-werkzeuge, prozesse-shell]
- title: Daten & Web
description: Formate, Text, APIs, Scraping und Browser-Steuerung.
modules: [datenformate, regex-text, web-apis, scraping-browser]
description: Formate mit Excel, Text, APIs mit Authentifizierung, Scraping und Browser-Steuerung.
modules: [datenformate, regex-text, web-apis, api-authentifizierung, scraping-browser]
- title: Betrieb
description: Zeitsteuerung, Benachrichtigungen, Robustheit, Deployment und KI.
modules: [zeitsteuerung, benachrichtigungen, robustheit, deployment-ci, ki-automatisierung]
description: Zeitsteuerung, Benachrichtigungen, Postfach und Kalender, Robustheit mit ausführbaren Fehlerfällen, Logs und Geheimnisse, Deployment und KI.
modules: [zeitsteuerung, benachrichtigungen, postfach-kalender, robustheit, fehlerfaelle, logs-geheimnisse, deployment-ci, ki-automatisierung]
Loading
Loading