Proposal: Support Class-Based Syntax for Python Entities
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
Piste de recherche
L’issue ne mentionne aucun fichier ni test. Commencez par examiner la gestion existante des entités basée sur des fonctions autour de DurableEntityContext et l’exemple TypeScript lié, puis déterminez comment les méthodes de classe, l’initialisation, les résultats renvoyés et l’état persisté doivent correspondre au modèle d’entités actuel. La tâche ne pourra être considérée comme terminée qu’une fois qu’une conception validée de la syntaxe et de la gestion de l’état aura été définie avant l’implémentation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Currently, Entities in Python (and JavaScript) only support function-based syntax, where operations are delineated by a cascade of if-statements. In C#, a class-based syntax is supported, which allows individual operations to be split into methods belonging to a larger class that represents the Entity itself.
Implementing this alternative syntax should not be too difficult, it's mostly just a layer of indirection. Making matters simpler, we already have a community-driven example of how to do this for TypeScript here: https://scale-tone.github.io/2021/03/15/durable-mvc .
As an example for the syntax, consider the following entity function using the current implementation syntax
def entity_function(context: df.DurableEntityContext):
current_value = context.get_state(lambda: 0)
operation = context.operation_name
if operation == "add":
amount = context.get_input()
current_value += amount
elif operation == "reset":
current_value = 0
elif operation == "get":
pass
context.set_state(current_value)
context.set_result(current_value)
It's class-based syntax alternative would look as follows:
class Counter:
def __init__(self): # this corresponds to state initializer, or the `lambda: 0` in the function-based syntax
self.entity_state= 0
def add(self, amount):
self.entity_state+= amount
return self.entity_state
def get(self):
return self.entity_state
def reset(self):
return self.entity_state= 0
Finally, it makes sense to me that the return statement would set the value for context.set_result. A more difficult question is to know what value to save for set_state. One easy solution is to require the state to be under the name self.entity_state but perhaps that's too restrictive. What do others think?
- Langage dominant
- Python
- Étoiles
- 157
- Forks
- 71
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Azure/azure-functions-durable-python
-
Enhancement fixed-in-v2 P3
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Azure/azure-functions-durable-python#617 · 1 commentaire ·
-
bug Debuggability fixed-in-v2 P2
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Azure/azure-functions-durable-python#587 · 2 commentaires · 1 réaction ·
-
Custom object serialization broken for orchestrator return valuesPeut-être pris @andystaples l’a pris il y a 98 jours. Ouvertebug fixed-in-v2 P2
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Azure/azure-functions-durable-python#568 · 1 commentaire ·
-
bug fixed-in-v2 P3
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Azure/azure-functions-durable-python#475 · 1 commentaire ·
-
Propagate FunctionInvocationId for single-instance and bulk purge requestsPeut-être pris @Fire162 l’a pris il y a 3 jours. OuverteNeeds: Triage :mag:
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
Toutes les issues de Azure/azure-functions-durable-python
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
FinanceFlash/unvibecode#577 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
area/test type/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Clodmony/starship-coop#70 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
punitarani/fli#270 ·
-
🐛 Bug 🔔 Pending processing
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
jumpserver/jumpserver#17980 ·
Les mainteneurs répondent en général sous 1 jour
-
community enhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
Les mainteneurs répondent en général sous 1 jour