[v2][Python] Make generated implementation modules private
- 主要语言
- Java
- 星标
- 10.5k
- 派生
- 1.5k
- 平均合并
- 1 天 11 小时
- 30 天内合并 PR
- 128
描述
https://github.com/github/copilot-sdk/blob/main/python/copilot/generated/__init__.py Makes it clear that the `copilot.generated` subpackage is not meant to be public:
https://github.com/github/copilot-sdk/blob/cd2b10b07e8f393b09379dfda6b30f658b2963d2/python/copilot/generated/__init__.py#L3
But the subpackage doesn't start with an underscore to signify it's an implementation detail: `copilot._generated`.
As well, https://github.com/github/copilot-sdk/blob/main/python/copilot/rpc.py and https://github.com/github/copilot-sdk/blob/main/python/copilot/session_events.py which are meant to act as the public API potentially over-expose things. While `copilot.rpc` does export something explicitly:
https://github.com/github/copilot-sdk/blob/cd2b10b07e8f393b09379dfda6b30f658b2963d2/python/copilot/rpc.py#L10-L11
... both files **also** do an `import *` followed by an import of `__all__` from the generated code which lists everything contained in the generated code. E.g.:
https://github.com/github/copilot-sdk/blob/cd2b10b07e8f393b09379dfda6b30f658b2963d2/python/copilot/session_events.py#L9-L10
exposes 330 symbols in the module:
https://github.com/github/copilot-sdk/blob/cd2b10b07e8f393b09379dfda6b30f658b2963d2/python/copilot/generated/session_events.py#L9883-L10215
I'm not sure if all 330 symbols are meant to be exposed, but at least `copilot.generated` should be made private by renaming it to `copilot._generated`. If all of those symbols are meant to be exposed then that one-liner in `copilot.rpc` might as well be removed. If they are not meant to be exposed then the `import __all__` and `import *` should go and you can explicitly set `__all__` in the exporting modules.
贡献指南
调研方向
从 python/copilot/generated/__init__.py、python/copilot/rpc.py、python/copilot/session_events.py 以及生成的 rpc.py 和 session_events.py 模块开始。在更改包名或导出列表之前,追踪哪些生成的符号应当是公开的。完成的标准是实现模块为私有,且公共模块只公开预期的 API,不会意外公开生成的符号。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- api
- Issue 类型
- 重构
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 活跃
- 描述清晰度
- 基本清楚
- 新手友好度
- 55/100