bazel-contrib / bazel-contrib/rules_python

Would a py_interactive rule be useful to include?

Abierto
#3,090 9 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Starlark
Estrellas
688
Forks
721
Merge medio
15 h 7 min
PR fusionados (30 d)
76

Descripción

# 🚀 feature request

This is a request to get thoughts on contributing https://github.com/jpwoodbu/rules_python_interactive to `rules_python`.

### Relevant Rules

Perhaps `py_binary` and `py_library`?

### Description

I have made https://github.com/jpwoodbu/rules_python_interactive, which adds a `py_interactive` macro, and I wonder if it's worth including within `rules_python` itself. I see there's a relatively new [REPL](https://github.com/bazel-contrib/rules_python/blob/main/docs/repl.md) feature that does nearly the same thing. But there are some important ergonomic differences.

1) `py_interactive` targets are set up within `BUILD.bazel` files just like a `py_binary`.
1) `py_interactive` shells have tab completion.
1) `py_interactive` has an optional `pushes` argument for initial setup (e.g. importing a module).

Having the setup within the `BUILD.bazel` file is really the key difference. If you often need to debug inside an interactive shell, it's nice to have the configuration in place and just a simple `bazel run :my_library_interactive` away. The setup is also very easy to understand. In most cases, it's identical to setting up a `py_binary`.

### Describe the solution you'd like

My preferred solution would be to add `py_interactive` from https://github.com/jpwoodbu/rules_python_interactive to `rules_python`, should it makes sense to do so. This is not a proposal to remove the REPL feature. It could be worth having both: one that requires setup but is easier to use and one that only requires the right command line.

### Describe alternatives you've considered

I had considered having a virtual rule for `py_library` where you could run a `py_library` target, perhaps with a `.i` suffix to get an interactive shell. But I suspect there would be many efficiency downsides for Bazel itself. And it lacks the configurability of a whole new rule/macro (e.g. adding a specific collection of `deps` unlike any existing `py_library` targets).

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Lee docs/repl.md y compáralo con el proyecto rules_python_interactive referenciado y con los puntos de entrada py_binary y py_library existentes. Se considera terminado cuando se haya alcanzado una decisión de los maintainers sobre si py_interactive pertenece a rules_python y cómo coexistiría con la REPL; este issue no define un objetivo de implementación ni de pruebas.

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

Evaluación

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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.