用途:为需要支持多后端、加载用户安装插件、并按动态 schema 校验表单的工具提供可扩展性设计模式。
主要能力:一、两层插件发现,用 importlib.metadata.entry_points() 在运行时发现插件,同时用 ~/.config/my-tool/plugins 文件式注册表记录应安装的 PEP 508 规格,二者差异可提示重装。二、插件 add/list/remove,list 对比两层并标记“已配置但未激活”,add 去重后写入配置并重装。三、provider 抽象,用 frozen dataclass 封装 kind、host、token_env、api_base、scheme,post_init 解析 host 中的 scheme,并用 object.setattr 设置派生字段。四、schema 驱动校验,按 {"path": "/field"} 解析值引用,支持 required、regex、length、numeric、email、and、or、not 等函数调用,未知函数默认通过以保持向前兼容。
使用方式:插件通过 entry point 组(如 my_tool.plugins)暴露,需实现 name 属性与 run(params) 方法;provider 可用 from_env 从环境变量构造;校验器对声明式规则求值。
限制与注意:entry point 发现按进程缓存,安装新插件后需重启进程;插件 list 使用模糊匹配以兼容包名与 entry point 名不一致;frozen dataclass 的派生字段需用 object.setattr;未知校验函数默认通过。资料未提供具体安装命令、收费或平台信息。