bazel-contrib / bazel-contrib/rules_python

Would a py_interactive rule be useful to include?

未关闭
#3,090 9 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Starlark
星标
688
派生
721
平均合并
15 小时 7 分钟
30 天内合并 PR
76

描述

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

贡献指南

打开贡献指南

调研方向

阅读 docs/repl.md,并将其与所引用的 rules_python_interactive 项目以及现有的 py_binary 和 py_library 入口进行比较。完成的标准是就 py_interactive 是否属于 rules_python,以及它将如何与 REPL 共存,达成维护者决定;此 issue 不定义实现或测试目标。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
build-system
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
需要澄清
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。