RFC for ergonomically passing Python variables to Julia
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
- 25/100
Piste de recherche
Commencez par examiner les deux API proposées, teval et let, ainsi que la discussion Julia Discourse liée. La finalisation nécessiterait un accord sur une approche ergonomique pour transmettre des variables Python à Julia et sur un périmètre d’implémentation concret.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
I propose one of the following two APIs as a way to more ergonomically pass Python variables to Julia code:
jl.teval("const MY_CONST = $(x)", x=my_python_const)
a "template" eval, or
with jl.let(x=my_python_const):
jl.seval("const MY_CONST = x")
which is a juliacall "let."
Would be interested in hearing other ideas too.
This is designed to address the following issue. Currently, passing Python objects to Julia via seval requires creating closure functions:
jl.seval("x -> @eval const MY_CONST = $x")(my_python_const)
While Python's PEP 750 proposes Template Strings which could offer one solution:
jl.seval(t"const MY_CONST = {my_python_const}")
We could implement something similar with a new teval method:
jl.teval("const MY_CONST = {my_python_const}")
However, this has two key issues:
- The
{}syntax conflicts with Julia type signatures (e.g.,Vector{Float64}), which could cause subtle bugs. Even if t-strings are eventually merged to Python, we would still face this issue! tevalwouldn't have access to local variables to referencemy_python_const
Let's look at the two proposed approaches in more detail:
The first approach makes variable passing explicit but ergonomic:
jl.teval("const MY_CONST = $(x)", x=my_python_const)
The second approach uses a context manager for temporary variable binding:
with jl.let(x=my_python_const):
jl.seval("const MY_CONST = x") # Would access the bound value
Basically the seval would have access to this stack of Python objects passed via let, and put them into the Julia context via a Julia-evaluated let statement.
Thoughts? @cjdoris @mkitti
Going to post this on the Julia discourse too. Edit: https://discourse.julialang.org/t/rfc-for-ergonomically-passing-python-variables-to-julia/124266
- Langage dominant
- Julia
- Étoiles
- 1.1k
- Forks
- 89
- Merge moyen
- 2 j 15 h
- PR mergées (30 j)
- 7
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
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 JuliaPy/PythonCall.jl
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
JuliaPy/PythonCall.jl#828 · 7 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
JuliaPy/PythonCall.jl#809 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Locking julia dependenciesOuverteenhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
JuliaPy/PythonCall.jl#805 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
JuliaPy/PythonCall.jl#796 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JuliaPy/PythonCall.jl#790 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de JuliaPy/PythonCall.jl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
SciML/DiffEqNoiseProcess.jl#342 ·
-
Broken links in the docsOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
oxfordcontrol/COSMO.jl#211 ·
-
documentation
Difficulté 2/5 Une demi-journée Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 6 jours
-
Out-of-place JLArray/GPU problem with VectorContinuousCallback scalar-indexes (callback cache built with CPU zeros)Peut-être pris @ChrisRackauckas-Claude l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
SciML/OrdinaryDiffEq.jl#4813 ·
Les mainteneurs répondent en général sous 1 jour