ITADN
Josverl/micropython-stubber
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

在 VSCode 中提升 MicroPython 生产力

pypi version python versions Black Star on GitHub All Contributors

pytest stubber Documentation Status

Open in VSCode

现代编辑器中普遍存在的 IntelliSense 和代码检查功能,对于 MicroPython 项目而言,开箱即用并不奏效。 虽然该语言是 Python,但所使用的模块与 CPython 不同,而且不同的移植版本拥有不同的模块和类,或者具有不同参数的相同类。

在现代编辑器中编写 MicroPython 代码,不应需要保持浏览器打开以查看读取传感器、点亮 LED 或发送网络请求的确切参数。

幸运的是,通过一些额外的配置和数据,可以让编辑器理解你的 MicroPython 变体,无论你使用的是预编译固件之一,还是运行一次性自定义固件版本。

demo]

为了实现这一点,需要以下几项:

  1. 使用 PEP 484 类型提示为固件中的原生/启用模块创建存根文件
  2. VS Code Python 扩展的特定配置
  3. Pylint 的特定配置 [ 可选 ]
  4. 抑制与 MicroPython 原则或代码优化相冲突的警告。

请查阅 [https://micropython-stubber.readthedocs.io] 上的文档

配置好这些之后,VSCode 将在很大程度上理解 MicroPython,帮助你编写代码,并在部署到开发板之前捕获更多错误。

请注意,上述内容不仅限于 VSCode 和 pylint,但这恰好是我使用的组合。

许多子模块已经生成,并通过 PyPi、github 或工具预装进行共享,因此你很可能只需获取一份副本,几分钟内即可开始高效工作。

从 PyPI 安装预构建的存根

本节介绍如何从 PyPI 安装存根,以及如何在项目中使用它们。 如果您想创建或维护存根 - 请参阅下一节。

  • 在 typings 文件夹中安装(推荐) pip install -U micropython-<port>[-<board>]stubs --no-user --target ./typings
  • 在 venv 中安装(激活后) pip install -U micropython-<port>[-<board>]stubs --no-user

示例:

pip install -U micropython-stm32-stubs

# Install stubs for a specific version.
pip install -U micropython-esp32-stubs==1.20.0.*

# Install stubs for a specific board.
pip install -U micropython-rp2-pico_w-stubs

有关如何使用存根的更多详细信息,请参阅 RTD 上的文档

  1. 姊妹仓库 MicroPython-stubs 包含了我与他人合作收集的所有 stubs,可直接使用。 该仓库还包含示例配置文件,可轻松适配您的环境。

  2. Micropython-stubber 在其某些操作中使用了 MPFlash。 mpflash 曾托管在此仓库中,但已迁移至其独立仓库。

构建存根的快速入门

pip install micropython-stubber

cd my_stub_workspace
mkdir all-stubs

# pick a firmware version (tag, stable, preview)
stubber switch stable

# generate doc-based stdlib stubs for the selected version
stubber docstubs --enrich

# capture frozen modules from reference firmware downloads
stubber frozen --version stable --enrich

# merge the pieces for one or more targets
stubber merge --port esp32 --board ESP32_GENERIC --version stable
stubber merge --port rp2 --board RPI_PICO_W --version stable

# build final wheel-style outputs in all-stubs/<port>/<board>
stubber build --port esp32 --board ESP32_GENERIC --version stable
  • switch 在运行其他命令之前,将工作区锁定到 MicroPython 的某个版本。
  • docstubs 拉取基于文档的存根;frozen 添加特定于板卡的冻结模块。
  • mergebuild 将所有内容合并为位于 all-stubs/ 下的可安装存根。

常用命令

  • 列出可用的固件标签:stubber switch --list
  • 为某个端口的所有板卡创建合并的存根:stubber merge --port esp32 --board all --version stable
  • 重新构建已下载的工件:stubber build --port esp32 --board ESP32_GENERIC --version stable
  • 使用文档字符串/参数提示丰富现有的存根集:stubber docstubs --enrich

输出及其使用位置

  • 生成的 wheel 和文件夹位于 all-stubs/<port>/<board>/<version> 下。
  • 将编辑器的类型检查器(Pyright/Pylance/Mypy)指向 all-stubs 路径,或将生成的 wheel 安装到项目的虚拟环境中。
  • 关于完整的操作示例,请参阅笔记本 Manual stub build chain.ipynb,它镜像了上述使用的 CLI 工作流。

处理自定义 MicroPython 构建

如果您正在使用 MicroPython 的分支、分支或自定义构建(例如自定义的 RPi Pico W 固件),请参阅 Custom MicroPython Guide 以获取有关如何为您的特定构建生成存根的详细说明。

开发与测试

这在 docs 文件夹中的 developingtesting 文档中有更详细的描述。

主分支

默认分支的名称已更改为 main。 如果您在 main 之前克隆过此仓库,需要调整本地仓库以了解此更改,或创建一个新克隆。

要更新,请运行以下命令:

git branch -m master main                    
git fetch origin
git branch -u origin/main main                      
git remote set-head origin -a

更多信息请参阅 重命名分支

许可证

MicroPython-Stubber 采用 MIT 许可证,所有贡献都应遵循此 LICENSE.

贡献

Jos Verlinde
Jos Verlinde

💻 🔬 🤔 🖋 🖍️
Thonny, Python IDE for beginners
Thonny, Python IDE for beginners

🤔 🔬
MicroPython
MicroPython

🔣 🖍️
pyright
pyright

🔧
Boris Lovosevic
Boris Lovosevic

🔣 🖍️
Paul Sokolovsky
Paul Sokolovsky

🔣 🖍️
pycopy
pycopy

🔣 🖍️
Pycom
Pycom

🚇
Braden Mars
Braden Mars

🐛 💻 🖍️ 📦
James Manners
James Manners

💻 🐛
Patrick
Patrick

🐛 💻 🖍️
Paul m. p. P.
Paul m. p. P.

🤔 🔬
Edward K. Ream
Edward K. Ream

🔌
Daryl Stultz
Daryl Stultz

🖍️
Keeping things together
保持事物完整

🐛
vbolshakov
vbolshakov

🐛 🖍️
Mauro Riva
Mauro Riva

📝 🐛
MathijsNL
MathijsNL

🐛
Callum Jacob Hays
Callum Jacob Hays

🐛
Zoltán Vörös
Zoltán Vörös

🔣
vincent-l-j
vincent-l-j

📖
Egor Litvinov
Egor Litvinov

🐛
Sam Duke
Sam Duke

💻
Howard Lovatt
Howard Lovatt

🖍️ 🔬
VirtualWolf
VirtualWolf

Lukas Kremla
Lukas Kremla

本项目遵循 all-contributors 规范。欢迎任何形式的贡献!