架构

boltons 具有最低限度的架构:保持尽可能一致和独立,并着眼于尽可能广泛地保持其用例和使用模式的范围。

整合

实用程序库通常在项目中被广泛使用,并且因为它们通常不是应用程序体系结构的基础,所以简单性和稳定性可能优先于版本新近。在这些情况下,开发人员可以:

  1. 复制整个 boltons 打包到一个项目中。

  2. 只复制 utils.py 项目所需的文件。

波顿在设计上考虑到了这一点。这个 boltons 包不依赖于包,因此很容易包含到项目中。此外,几乎所有单独的模块都被编写为尽可能独立,从而允许将功能添加到项目中。

一种新的设计方案 bolton

boltons 旨在成为一个活的类库,一个不断扩大的经过测试和真正的实用程序的集合。boltons要成为boltons,它应该是:

  1. 应该是纯的--Python,并且尽可能地自包含。

  2. 执行一项共同的任务或履行一项共同的角色。

  3. 演示并缓解标准库中的一些不足。

  4. 通过在最佳实践和“足够好”、正确性和常识之间取得平衡,努力实现标准库规定的标准。当有疑问时,问:“标准库会做什么?”

  5. 有易于接近的文档,至少有一个有帮助的文档 doctest ,指向相关标准库功能的链接,以及提供进一步功能的任何第三方程序包。

最后,boltons应该是通常琐碎的绊脚石的实质性实现,而不是反过来。解决的问题越大,该功能就越不适合包含在Bolton中;Bolton是基本的和独立的,而不是全面的和架构定义的。

主题: boltons

boltons 多年来有各种各样的灵感,但出现了一套明确的主题:

  1. 从Python文档中:

    1. queueutils - heapq docs

    2. iterutils - itertools docs

    3. timeutils - datetime docs

  2. 标准库的重新实现和调整:

    1. boltons.fileutils.copytree() - shutil.copytree()

    2. boltons.namedutils.namedtuple - collections.namedtuple()

  3. 在多个其他库中发现的一次性实现 utils.py 或同等物

    1. boltons.strutils.slugify()

    2. boltons.strutils.bytes2human()

    3. boltons.timeutils.relative_time()

  4. 更强大的多用途数据结构

    1. boltons.dictutils.OrderedMultiDict

    2. boltons.setutils.IndexedSet

    3. boltons.listutils.BList

    4. boltons.namedutils.namedlist

    5. boltons.tableutils.Table

  5. 个人实践与体会

    1. boltons.debugutils

    2. boltons.gcutils

    3. boltons.tbutils