Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

RFC for ergonomically passing Python variables to Julia

Abierto
#580 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
25/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Estancado
Stack tecnológico
julia, python
Área
api, backend

Línea de trabajo

Empieza revisando las dos APIs propuestas, teval y let, junto con la discusión enlazada de Julia Discourse. Para darlo por terminado, sería necesario acordar un enfoque ergonómico para pasar variables de Python a Julia y definir un alcance concreto de implementación.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

Lenguaje dominante
Julia
Estrellas
1.1k
Forks
89
Merge medio
2 d 15 h
PR fusionados (30 d)
7

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaPy/PythonCall.jl

Todos los issues de JuliaPy/PythonCall.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.