aws / aws/aws-durable-execution-sdk-python

[Feature]: Add composable SerDes transformation pipelines

Ouverte
#677 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement needs-triage parity pkg:sdk
Langage dominant
Python
Étoiles
53
Forks
25
Merge moyen
1 j 19 h
PR mergées (30 j)
40

Description

## 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.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par lire les implémentations existantes de SerDes et FileSystemSerDes ainsi que leurs API de configuration afin de comprendre la frontière actuelle du codec de valeurs. Définissez le protocole des étapes et la sémantique de composition au moyen de la RFC requise, puis ajoutez des tests couvrant l’ordre, le passage inchangé de l’entrée, les valeurs nulles et vides, les envelopes reconnus malformés et les types de valeurs personnalisés, tout en préservant la rétrocompatibilité.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
backend
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
Active
Clarté
Plutôt claire
Accessibilité débutants
30/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.