约束是好的:Python 的元数据困境

主要观点:正在努力为 Python 构建新的通用锁文件标准,此过程凸显创建满足所有人的标准之难,不同 Python 打包工具对锁文件的看法不同;Python 存在元数据问题,其元数据系统复杂且缺乏约束;JavaScript 中约束能简化和改进系统,而 Python 历史上对元数据约束少,导致诸多问题,如元数据访问 disjointed 复杂、需强制重新生成、缓存失效不明确、元数据存储碎片化、动态元数据使解析器变慢、认知复杂度高等。

关键信息

  • 新 Python 锁文件标准构建在 Python 讨论论坛进行。
  • JavaScript 元数据简单,有 1:1 关系、跨平台一致、静态且更新需显式改 package.json。
  • Python 旧 setup.py 系统允许任意代码执行,本地和 PyPI 上的元数据生成方式不同,新 pyproject.toml 标准虽有改进但仍存在问题。
  • 动态元数据给 Python 带来诸多问题,如使解析器变慢、增加认知复杂度等,但移除它可能面临社会问题。

重要细节

  • JavaScript 中 @sentry/cli 包通过 optionalDependencies 和平台过滤器处理平台特定依赖。
  • @sentry/cli 2.39.0 版本时 resolver 只需访问一个 URL 即可获取所有信息。
  • 过去在本地开发中常出现 pkg_resources.DistributionNotFound 异常。
  • 在 Bluesky 上因将 readme 生成器视为问题而受指责,理想情况是 site-packages 中的内容与版本控制中的一致且有 README.md 文件。
阅读 7
0 条评论