-
-
Notifications
You must be signed in to change notification settings - Fork 639
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_interactivetargets are set up withinBUILD.bazelfiles just like apy_binary.py_interactiveshells have tab completion.py_interactivehas an optionalpushesargument 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).