Repository navigation
Automation: API-Auth, Postfach und Kalender, Excel im Browser, ausführbare Fehlerfälle (LRN-12) - #28
Open
hernstev97 wants to merge 10 commits into
Open
hernstev97 wants to merge 10 commits into
hernstev97 wants to merge 10 commits into
Conversation
openpyxl 3.1.5 und et_xmlfile 2.0.0 liegen als reine Python-Wheels in vendor/pyodide und laden wie pytest per Dateiname, sobald Code openpyxl importiert. pnpm verify installiert dieselben Versionen in seine uv-Umgebung. datenformate trägt jetzt place: unterwegs. Zwei neue Abschnitte zeigen Arbeitsmappen, Blätter über Namen, Kopfzeilen als Vertrag, Formeln ohne Neuberechnung, data_only, Zahlenformate und fremden Text, der mit "=" beginnt. Neu: blattreihenfolge (output), excel-bericht und excel-nach-kopf (code). Alle Codezeilen passen auf 360 px; dafür ändern sich der geprüfte Code von pipeline, csv-quote, json-typen, id-verlust und excel-cache. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Track „Daten & Web“, nach web-apis, place: unterwegs. 401 gegen 403, API-Key im Header, Basic nach RFC 7617, Bearer nach RFC 6750, OAuth 2.0 mit client_credentials (ohne Refresh-Token, RFC 6749 §4.4.3) und Refresh-Token mit Rotation (§6, RFC 9700), Token-Cache mit injizierter Uhr, genau eine Erneuerung bei 401 und HMAC-Webhook-Signaturen mit dem Testfall aus der GitHub-Dokumentation. 13 Übungen, davon fünf code: basic-header, token-cache, einmal-erneuern (Starter mit Endlosschleife, Fake-API liefert 401 und bricht nach fünf Anfragen ab), refresh-rotation (invalid_grant) und webhook-signatur (Nicht-ASCII im Header darf nicht abstürzen). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Track „Betrieb“, nach robustheit, place: unterwegs. Fake-Uhr, deren Wartefunktion die Zeit vorstellt, Full Jitter und Deadline, Retry nach Statuscode mit Retry-After als Zahl und als HTTP-Datum, Lockfile mit O_EXCL und flock, Checkpoint nach der Wirkung mit os.replace, Deduplizierung mit UNIQUE, INSERT OR IGNORE und rowcount. Die fünf code-Übungen lösen echte Fehler aus: 503-Folgen gegen eine Deadline, ein simulierter Wettlauf beim Lockfile, eine fremde Sperre, ein Absturz zwischen Wirkung und Checkpoint, eine kaputte Checkpoint-Datei und ein Neustart über eine zweite sqlite-Verbindung. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Track „Betrieb“, nach fehlerfaelle, place: unterwegs. JSON-Formatter, Lauf-ID per ContextVar-Filter am Handler oder LoggerAdapter (auch merge_extra seit 3.13), INVOCATION_ID und _SYSTEMD_INVOCATION_ID, Journal oder RotatingFileHandler (rotiert nur mit maxBytes und backupCount > 0), ein Filter, der Geheimnisse schwärzt, Secrets aus keyring, .env, LoadCredential und Actions-Secrets, Ablauf bei einem geleakten Token. systemd-Aussagen sind gegen systemd.exec(5) geprüft, LoadCredential zusätzlich in einer User-Unit ausprobiert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Track „Betrieb“, nach benachrichtigungen, place: unterwegs. IMAP-Modell mit UID, UIDVALIDITY, Flags und PERMANENTFLAGS, imaplib mit Zertifikatsprüfung, BODY.PEEK[] statt BODY[], $Verarbeitet als Verarbeitungszustand, Anhänge lesen, unter sicheren Namen speichern und versenden, ICS nach RFC 5545 (CRLF, Faltung nach Oktetts, Escaping, UID, DTSTAMP), Google Calendar API und Microsoft Graph als Konzept mit Sync-Token, 410 und Delta-Abfragen. Die Antwortformen der Fake-IMAP-Objekte stammen aus einem Lauf gegen einen lokalen GreenMail-Server; die Musterlösungen von postfach-verarbeiten und anhaenge-speichern liefen dort ebenfalls. Die ICS-Lösungen sind gegen die Bibliothek icalendar in beide Richtungen geprüft. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
place: pc, weil die Praxisaufgabe einen echten Browser startet. Neue Abschnitte zu storage_state (Datei wie ein Passwort behandeln), Warten mit Ziel und Zeitgrenze (expect wirft AssertionError, Aktionen TimeoutError), Tracing und Screenshot nur bei Fehlern und Netzwerk-Mocking mit route (Glob muss die ganze URL treffen). Neu: route-handler und belege-bei-fehler (code, mit Fakes für Route, Tracing und Page), route-muster (bug). fixture-browser deckt jetzt storage_state, expect_response, Trace und Screenshot ab; ihre Checkliste ändert sich. Alle Playwright-Beispiele und die Musterlösung liefen lokal mit Python-Playwright 1.63, offline über route. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…N-12) api-melder bekommt OAuth 2.0 mit Token-Cache, Rotation und genau einer Erneuerung bei 401 (neuer Schritt oauth-refresh, neue Abnahme token-erneuerung; bestehende IDs bleiben). Neues Projekt postfach-rechnungen (am PC): IMAP mit BODY.PEEK[] und $Verarbeitet, sichere Anhänge, Excel-Übersicht, ICS-Termine, LoadCredential, flock und JSON-Logs. 15 neue Interview-Karten (60) und 12 Glossarbegriffe (60). area.yaml nennt die neuen Themen, ein Outcome für Postfach und Kalender kommt dazu. web-apis, benachrichtigungen, cli-werkzeuge, robustheit, deployment-ci und zeitsteuerung verweisen in der Lektion auf die neuen Module; ihre Übungen bleiben unverändert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ywright (LRN-12) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Zeilennummern kosten im Bug-Block Platz; eine Zeile mit 35 Zeichen scrollte seitlich. Fehlerzeile und Korrektur bleiben gleich. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- signatur-ueber-json neu geschnitten: genau eine falsche Zeile (die HMAC-Eingabe), Vergleich auf Bytes, Parsen erst nach der Prüfung. - storage_state speichert IndexedDB nur mit indexed_db=True (seit 1.51). - ics-falten prüft jetzt, dass das Fortsetzungs-Leerzeichen mitzählt. - ics-termin: Hinweis zu Zeiten ohne Zone war falsch (astimezone wirft nicht). - json-formatter-Prompt zeigt ö statt eines wörtlichen ö. - journalctl _SYSTEMD_INVOCATION_ID findet nicht die Meldungen von systemd selbst; --invocation ab systemd 257 genannt. - KI-Regel im Projekt postfach-rechnungen: Fehlersuche bleibt bei dir. - Kleinere Präzisierungen: 403 und Scope, systemctl start auf laufende Dienste, fsync gegen Stromausfall, open(..., "a") für flock, SEQUENCE bei geänderten Terminen, RFC-5545-SHOULD, header_value für Cookies, Formen statt Diagramme bei openpyxl, Zirkelbezug, close() im Read-only-Modus, EnvironmentFile im Spickzettel. - Weitere richtige Antworten akzeptiert (unkeyword, +FLAGS.SILENT, BODY.PEEK[] ohne Klammern, bearer), Tests ergänzt (anderer 400, leere Credential-Datei, PUT/PATCH/DELETE), Prompts eindeutiger. - scraping-browser hat wieder fünf Modulquellen, Füllwörter raus, README nennt openpyxl in vendor/pyodide. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Owner
Author
|
CI-Stand für 1150e9b: |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Löst LRN-12. Der Automation-Kurs hält jetzt, was
area.yamlverspricht: Excel und Web-APIs mit Authentifizierung. Dazu kommen Postfach und Kalender, Logs und Geheimnisse und Fehlerfälle, die als Code-Übungen im Browser scheitern statt nur beschrieben zu werden.Was neu ist
client_credentials(ohne Refresh-Token, RFC 6749 §4.4.3) und Refresh-Token mit Rotation (§6, RFC 9700), Token-Cache mit injizierter Uhr, genau eine Erneuerung bei 401, HMAC-Webhooks mit dem Testfall aus der GitHub-Doku. Die Fake-API liefert 401 und bricht nach fünf Anfragen mit „Endlosschleife?“ ab.PERMANENTFLAGS,BODY.PEEK[]stattBODY[],$Verarbeitetals Verarbeitungszustand, Anhänge unter sicheren Namen speichern und versenden, ICS nach RFC 5545 erzeugen und lesen, Google Calendar und Microsoft Graph als Konzept.O_EXCLundflock, Checkpoint nach der Wirkung mitos.replace, Deduplizierung mitUNIQUE,INSERT OR IGNOREundrowcount.ContextVar-Filter am Handler oderLoggerAdapter,INVOCATION_ID, Rotation, Schwärzen; keyring,.env,LoadCredential, Actions-Secrets, Ablauf bei einem geleakten Token.api-meldermit OAuth-Refresh (neuer Schritt und neue Abnahme, alte IDs bleiben), neues Projektpostfach-rechnungenam PC (IMAP, Anhänge, Excel, ICS,LoadCredential,flock).area.yamlmit neuem Outcome, kurze Verweise aus sechs bestehenden Lektionen.vendor/pyodide(zusammen rund 270 KB) und laden wie pytest per Dateiname, sobald Codeopenpyxlimportiert.pnpm verifyinstalliert dieselben Versionen. Handbuch und README nennen das.Automation: 13 → 17 Module, 152 → 208 Übungen (code 45 → 69), 45 → 60 Karten, 4 → 5 Projekte, 48 → 60 Begriffe, 38 → 54 h. 20 der 24 neuen Code-Übungen lösen echte Fehler aus (401, 503-Folgen, Absturz zwischen Wirkung und Checkpoint, belegter Lock, kaputte Signatur, Pfad im Anhangnamen, Duplikat nach Neustart).
Entscheidungen, die ich getroffen habe
cli-werkzeugehat schon 14 Übungen,robustheit11; der Stoff hätte beide über den Richtwert gedrückt. Die alten Module verweisen in einem Satz auf die neuen, ihre Übungen bleiben unverändert.scraping-browserist „Am PC“, weil die Praxisaufgabe einen echten Browser startet. Die neuen Code-Übungen dort laufen mit Fakes auch unterwegs.datenformateist „Unterwegs“; dafür habe ich seinen Code auf Handybreite gebracht.datenformate/pipeline,csv-quote,json-typen,id-verlust,excel-cacheund die Checkliste vonscraping-browser/fixture-browser. Frühere Lösungen dieser sechs Übungen zählen nicht mehr; IDs sind unverändert.icalendarin beide Richtungen, alle Playwright-Beispiele und die Praxislösung mit Python-Playwright 1.63 offline überroute,LoadCredentialin einer User-Unit.Belege
pnpm content:check: Automation ohne Hinweis (die 11 Hinweise betreffen Narrative wie aufmain).pnpm verify: alle Bereiche 1413 Prüfungen, 0 Fehler (vor den Review-Korrekturen); danach Automation 226 Prüfungen, 0 Fehler.pnpm test329/329,pnpm lint,pnpm buildgrün.src/python/harness.py: alle 208 Automation-Prüfungen bestehen, jede Musterlösung grün, jeder Starter scheitert.pnpm test:e2e: 59/59, darunter „automation: every runnable solution passes in the actual browser runtime“. Der Viewport-Test aus LRN-31 lief hier grün; angefasst habe ich ihn nicht.Offen
Screenshots
🤖 Generated with Claude Code