aws / aws/aws-durable-execution-sdk-python
[Feature]: Add composable SerDes transformation pipelines
- Vorherrschende Sprache
- Python
- Sterne
- 53
- Forks
- 25
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 40
Beschreibung
## What would you like?
Add a composable SerDes processing pipeline while preserving the existing object-to-string `SerDes[T]` API as the value-codec boundary.
Today, transformations such as filesystem offloading, compression, encryption, signing, or custom envelopes must each wrap and own another complete `SerDes`. This makes independent transformations difficult to reuse or reorder.
The proposed model is:
```text
value -> root SerDes -> string stage -> string stage -> checkpoint
value <- root SerDes <- string stage <- string stage <- checkpoint
```
## Possible Implementation
- Introduce a synchronous `SerDesStage` protocol whose serialize/deserialize methods accept and return `str` plus `SerDesContext`.
- Add a `ComposableSerDes` or composition helper that starts with one existing `SerDes[T]`, applies stages in forward order during serialization, and reverses them during deserialization.
- Require stages to emit a self-identifying/versioned format. During deserialization, a stage should:
- reverse valid input in its own format;
- raise `SerDesError` for malformed input that identifies itself as that stage;
- return unrecognized input unchanged.
- Keep existing `SerDes` implementations and configuration APIs backward compatible.
- Allow `FileSystemSerDes` functionality to be exposed as a stage so callers can choose any root value codec and can place compression, encryption, or signing before or after storage as appropriate.
- Add tests for stage order, pass-through of external invocation input, null/empty values, malformed recognized envelopes, and custom value types.
## Is this a breaking change?
No.
## Does this require an RFC?
Yes.
## Additional Context
Python's current `FileSystemSerDes` already supports a configurable inner value SerDes. A pipeline would separate that value-codec responsibility from reusable string transformations instead of adding another nested-wrapper layer. A comparable Java design is being developed in aws/aws-durable-execution-sdk-java#648.
Beitragsleitfaden
Rechercherichtung
Beginne damit, die bestehenden Implementierungen von SerDes und FileSystemSerDes sowie deren Konfigurations-APIs zu lesen, um die aktuelle Wert-Codec-Grenze zu verstehen. Definiere das Stage-Protokoll und die Kompositionssemantik über das erforderliche RFC und füge anschließend Tests hinzu, die die Reihenfolge, die unveränderte Weitergabe von Eingaben, Null- und leere Werte, fehlerhafte erkannte Envelopes sowie benutzerdefinierte Werttypen abdecken, wobei die Abwärtskompatibilität erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- backend
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Aktiv
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 30/100