---
name: python
description: IronPython/BOS 可用的 Python 语言层（缩进、命名、反模式）。已删除 CPython 3.10+、uv、pytest、pathlib 等与星空脚本冲突的指引。
---

# Python 语言层（企业版 IronPython · 无冲突）

本文件只服务 **金蝶星空企业版 BOS 脚本（IronPython on CLR）**。  
插件形态、API、事件 → skill 本体与 `assets/*`，不在此重复。

## 运行时事实

- 宿主多为 **IronPython 2.7 兼容**（以现场为准），**不是** CPython 3.11 应用
- 用 `clr.AddReference` + `from Kingdee.BOS... import ...`
- 插件脚本是 **裸函数** 事件，无 `class XxxPlugin` / `self` 壳（见模板）
- 交付验证以 **BOS 注册 + 数据中心** 为准，不以 `pytest` / `py_compile` 为门禁

## 仍适用的语言习惯

- 缩进 4 空格；函数/变量 `snake_case`；类名（若有）`PascalCase`；常量 `UPPER_CASE`
- 导入顺序清晰；避免 `from x import *`（BOS 模板里的 `from Kingdee.BOS import *` 属平台惯例，按模板保留）
- 禁止可变默认参数 `def f(x=[])`
- 禁止裸 `except:`；至少 `except Exception`
- 用 `is None` / `is not None`，不用 `== None`
- 字符串优先清晰拼接或格式化；业务提示走 `this.View.ShowMessage` 等平台 API
- 注释说明业务意图；禁止无意义注释

## 明确禁止 / 已删除（勿用于插件生成）

| 已删除项 | 原因 |
|----------|------|
| Python 3.10+ `match` / 仅 3.x 语法当默认 | IPY 常为 2.7 能力集 |
| `list[str]` / `X \| Y` 等新式注解当默认 | 宿主未必支持 |
| `uv` / `pip` / 虚拟环境工作流 | 非独立 CPython 工程 |
| `pathlib` / 本地文件应用样板 | 脚本在 BOS 内运行 |
| `pytest` / `unittest` 提交门禁 | 交付靠数据中心验证 |
| `dataclasses` 当业务模型默认 | 数据用 `DynamicObject` / BOS 实体 |
| `print` 当业务日志 | skill 已禁；用平台提示/日志约定 |
| `requests` / asyncio Web 服务样板 | 非 BOS 插件路径（OpenAPI 另 skill） |
| CPython 包结构 / 模块工程化 | 单脚本/平台挂载 |

## 与 C# skill 的边界

- 企业版插件 **默认 C#**（`kd-enterprise-csharp`）
- 仅用户明确 Python/IronPython 时用本 skill
- 禁止 `kd.bos.*`（Cosmic）；只用 `Kingdee.BOS.*`
