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 feature that does nearly the same thing. But there are some important ergonomic differences.
py_interactive
targets are set up withinBUILD.bazel
files just like apy_binary
.py_interactive
shells have tab completion.py_interactive
has an optionalpushes
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).