Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

RFC for ergonomically passing Python variables to Julia

Ouverte
#580 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
À l'abandon
Stack technique
julia, python
Domaine
api, backend

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

enhancement

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:

  1. 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!
  2. teval wouldn't have access to local variables to reference my_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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de JuliaPy/PythonCall.jl

Toutes les issues de JuliaPy/PythonCall.jl

Issues similaires

Plus d'issues Julia

Recevez les nouvelles issues par e-mail

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