Add a method to get intermediate return values from flow
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 30/100
Piste de recherche
Commencez par localiser les points d’entrée existants de assert_flow et flow, puis lisez la preuve de concept de traçage Python utilisant sys.setprofile et return events. C’est terminé lorsqu’une méthode de test prise en charge peut récupérer un résultat intermédiaire de flow et que des tests couvrent la valeur attendue.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Hi!
It would be nice for testing to have a way to retrieve the intermediate result of a flow, in a way similar to how assert_flow() works but with the return value.
Example:
def do_stuff():
return flow(0, func_1, bind(func_2))
def test_func_1():
v = get_function_value(func_1, do_stuff)
assert v == expected_value
In principle this can be done with sys.setprofile (in the trace function and for return events, arg contains the return value).
Proof of concept example:
def trace_func(function_to_search, frame, event, arg):
if event == 'return' and frame.f_code.co_name == function_to_search.__name__:
# modified exception to hold the return value under "value" attr
raise DesiredValueFound(arg)
def get_function_value(function_to_search, my_flow):
old_tracer = sys.gettrace()
sys.setprofile(partial(trace_func, function_to_search))
try:
my_flow()
except DesiredValueFound as e:
return e.value
finally:
sys.settrace(old_tracer)
What do you think?
Thanks :)
- Langage dominant
- Python
- Étoiles
- 4.4k
- Forks
- 156
- Merge moyen
- 3 h 44 min
- PR mergées (30 j)
- 22
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un 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 dry-python/returns
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
dry-python/returns#2394 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Composing 0-argument functionsOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
dry-python/returns#2365 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
dry-python/returns#2355 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
dry-python/returns#2295 · 4 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
dry-python/returns#2253 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de dry-python/returns
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
aicell-lab/bioengine#232 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
modelscope/evalscope#1836 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
jbaruch/speaker-toolkit#480 ·
Les mainteneurs répondent en général sous 1 jour