bazel-contrib / bazel-contrib/rules_python

Would a py_interactive rule be useful to include?

Ouverte
#3,090 9 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Starlark
Étoiles
688
Forks
721
Merge moyen
15 h 7 min
PR mergées (30 j)
76

Description

# 🚀 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).

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Read docs/repl.md and compare it with the referenced rules_python_interactive project and the existing py_binary and py_library entry points. Done means reaching a maintainer decision on whether py_interactive belongs in rules_python and how it would coexist with the REPL; this issue does not define an implementation or test target.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
build-system
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

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