Serialization/Deserialization doesn't handle Generics and generates Non-deterministic workflow error
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Inizia tracciando azure.functions._durable_functions._serialize_custom_object e _deserialize_custom_object usando l'esempio Pydantic Generic nell'issue. Riproduci il flusso da activity a orchestrator e verifica come viene serializzato e cercato il nome della classe generica. Il lavoro è completato quando l'esempio viene deserializzato correttamente senza AttributeError né un errore di workflow non deterministico.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
🐛 Describe the bug
When a Pydantic Generic object is returned in an activity function azure.functions._durable_functions._serialize_custom_object returns "class": "ClassName[GenericSpecificClass]". When azure.functions._durable_functions._deserialize_custom_object is called in the calling orchestrator, getattr(module, "ClassName[GenericSpecificClass]") fails: ClassName exists but not the specialized "ClassName[GenericSpecificClass]".
🤔 Expected behavior
Serialization and deserialization handles Generics.
Current behaviour
Deserialization fails with AttributeError: module 'xxx.xxx' has not attribute 'ClassName[GenericSpecificClass]'and produces a Non-Deterministic Workflow error
☕ Steps to reproduce
from pydantic import BaseModel
from typing import Generic
import azure.functions as func
import azure.durable_functions as df
class A(BaseModel, Generic[T]):
a: T
def to_json():
return self.model_dump(mode="json")
@classmethod
def from_json(cls, data: dict):
return cls(**data)
myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@myApp.orchestration_trigger(context_name="context")
def orchestrator_function(context: df.DurableOrchestrationContext):
x = yield context.call_activity("hello", None)
@myApp.activity_trigger(input_name="params")
def hello(params):
return A[str](a="xxx")
- Lingua principale
- Python
- Stelle
- 157
- Fork
- 70
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Azure/azure-functions-durable-python
-
Enhancement fixed-in-v2 P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Azure/azure-functions-durable-python#617 · 1 commento ·
-
bug Debuggability fixed-in-v2 P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Azure/azure-functions-durable-python#587 · 2 commenti · 1 reazione ·
-
Custom object serialization broken for orchestrator return valuesForse già presa @andystaples l’ha presa 70 giorni fa. Apertabug fixed-in-v2 P2
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Azure/azure-functions-durable-python#568 · 1 commento ·
-
bug fixed-in-v2 P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Azure/azure-functions-durable-python#475 · 1 commento ·
-
Enhancement fixed-in-v2 P3
Difficoltà 4/5 3-5 giorni Idoneità per principianti 62/100
Azure/azure-functions-durable-python#618 · 1 commento ·
Tutte le issue di Azure/azure-functions-durable-python
Issue simili
-
request-theme
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 70/100
LizardByte/ThemerrDB#8877 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area/install-update comp/gateway P0 sweeper:risk-compatibility type/bug
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 72/100
NousResearch/hermes-agent#135997 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
deepset-ai/haystack#13199 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] JSONLoader rejects valid UTF-8 BOM filesForse già presa @zouyonghe l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
anthropics/knowledge-work-plugins#1298 ·
I maintainer di solito rispondono entro 1 giorno