许多有用的子包和模块的命名空间包。

plib2的Python项目详细描述


PLIB子包

单个子包和模块包含docstring 有更多关于它们用法的信息;在这里 简要列出并说明。

物价等级

此子包中的每个模块都包含一个 具有相同名称的类;来自 plib.utils 子包用于生成所有类 出现在 plib.classes 命名空间中。见分包 和 moduleproxy docstrings以获取更多信息。

这个子包中的类主要是一个杂项 一组,除了我发现的 它们很有用。其中一些人唯一共同的主题是 为I/O客户机和服务器实现通用"策略", 在I/O通道提供的基本机制之上 plib.stdlib中的类

plib.扩展

此子包为函数(和 可能,在将来,其他对象)从 使用python/c api编写的扩展模块。将军 plib的哲学是尽一切可能 python,因此此子包中出现的唯一函数 是那些本质上不能在纯 蟒蛇. < /P>

plib.gui

这是最大的子包,包含一个简单的gui 具有两个主要功能的应用程序框架:

  • 它允许相同的高级代码与 不同的底层gui工具包。当前支持: qt(版本3和4)、kde(版本3和4)、wxwidgets, 和GTK。(编写此子包的原始原因 wxwidgets不使用qt,我喜欢qt/kde 小部件更好,但我想要运行的代码 跨平台。)
  • 它允许您用术语来表示gui的布局 在python列表和dict中,启用更具声明性的 以及易于阅读(和维护)的编码风格。

除了选择工具包(可能不需要: 子包的主模块可以"自动检测"哪个 要使用的工具包–plib安装gui安装后脚本 大部分的工作都是为了实现这一点-所以你只需要 如果不喜欢默认值,则重写 担心工具箱的内部细节;这个 子包是为了让代码看起来都一样。

注意,此子包中的gtk工具包支持是 "实验性的",如果被证明是 麻烦太多了。它现在被包括在内是因为 使用gtk作为底层gui时wxwidgets的行为 框架有一些怪癖,我还没能工作 还在附近。但是,gtk实现了一些 小部件(特别是表和列表/树视图)是mUCH 不如wxwidgets,所以 GTK最终更依赖于丑陋的黑客行为。

plib.ini

这个子包实现了一个抽象的"ini file"api 在posix系统上使用configparser和windows注册表 在Windows系统上。与 plib.gui 子包一样, 目标是隐藏配置的内部细节 从代码中存储,因此您只需定义 您的配置结构,同样使用本机python数据 类型(列表和听写)。

plib.stdlib

这是各种函数和类的命名空间 扩展或模拟python标准库。一些, 像 cached_属性 decorator一样,是 已经知道一段时间的模式,但是 在stdlib中有一个"规范"版本;而不是 plib是否依赖于其他第三方软件包,我 只是在这里提供了我自己的实现。其他,像 AbstractContainer类及其子类是 重新实现标准的python数据结构, 为使plib能够尽可能多地制作东西而编写 看起来像那些数据结构而不必子类化 内置的(对于用例有一些缺点 到目前为止,我已经知道了——更多信息请参见docstrings)。

plib.stdlib 命名空间还包含一个便利性 功能。 升级内置组件 与内置的模块名称空间等效 运行版本中不存在的函数 但在以后的版本中会出现。这是更多 比担心进口 相当于 plib.stdlib ;因此,一个数字 的函数现在从 plib.stdlib中删除 当 不存在内置等效项。在这个版本的 plib ,您需要在 代码(但只有一次);将来的版本可能会自动地 只要从 plib 导入任何内容,就调用它。我 还应该注意到我又偷偷溜进去了 不在python标准库中但是 我应该是。:-)有关详细信息,请参见文档字符串。

此子包中还有五个模块可见 名称空间:

  • coll 模块提供两个稍微定制的集合 类, fifo stack ,使用一个公共api。这个 模块还包括 集合的内容 来自标准库的模块,因此不必导入 两个模块;此外,对于python版本,其中 类尚未出现( defaultdict 和/或 namedtuple ),提供等效值。(相当于 namedtuple的实现取自activestate 导致Python2.6实现的配方。)
  • decotools模块为 与装修师合作。
  • 函数模块提供了 python标准库中的functools模块 2.5之前的python版本(在2.5和更高版本中 使functools模块内容出现在其命名空间中, 所以您可以从plib.stdlib import func中安全地 ,而不是 导入functools 并使用相同的功能。
  • 选项模块为 optparse 模块允许您表达您的选择 以python列表、元组和dict的形式进行配置, 还添加了一些最小参数检查功能。 (注意:在Python2.7和更高版本中,这个模块现在使用 argparse 模块,因为 optparse 模块是 不赞成的argparse模块提供了额外的 参数的功能,可以通过 阿格尔函数的参数 包含关键字参数的2元组序列,类似于 为选项所做的操作。)
  • 定时器模块提供计时代码的功能 标准库的 timeit 模块的替代api 当计时功能 作为对象,而不是源代码字符串。

plib.stdlib.io

此子包包含封装各种形式的类。 客户端/服务器I/O通道的数量。它被组织成子包 使名称空间更易于使用;子包 分为三类,每个子包在一个给定的类别中 包含相同的基本类名,因此更容易记住。 分类如下:

  • 设备类型: 插座 串行 。每种设备类型都有 a baseclient baseserver 类;套接字类型 还有一个baserequest类。这些通常不需要 直接使用;它们由I/O模式类使用,并且 分解,以便每个I/O模式都能看到给定的 设备类型。
  • I/O模式 异步 阻塞 (后者不只是 mean synchronous:它包括一个分叉的tcp套接字服务器)。每个 I/O模式对于这两种设备类型都有一个客户机和服务器类,并且 设备类型的请求类:类名是 串行客户端 串行服务器 socketclient socketserver , 以及baserequesthandler。异步类型也有"persistent" 类,支持全双工异步通信;这些 persistentSerial、persistentSocket和 持久请求处理程序 类。这些类的mixin版本 (末尾带有 mixin 的类名)也被提供,以供使用 如果需要备用数据处理(参见下一个项目符号),但是 通常不需要使用这些"手动"-请参阅"自动混音" 下面.
  • 数据处理 :上面给出的I/O模式类包括基本 数据处理,但它是非常基本的:它能检测到的唯一方法 "消息"被完全接收是为了检测一个关闭的 通道。对于某些应用程序,这已经足够了,但通常更多 需要复杂和健壮的数据处理。 数据 子包为此提供了三个mixin类, 关闭读写 终止读写 读写 。 其中第一个通过 关闭数据通道的另一端,但保留通道 打开以允许进一步写入(所有其他类默认为 当另一端关闭时关闭通道)。另外两个 类允许检测数据中的多个"消息" 流,通过检测"终止符"字符串或 每条消息的开头都包含其长度。这些课程 同时以同样的方式格式化传出的消息。

自动混合:派生您自己的客户机或服务器类 替代数据处理"手动",您需要使用"mixin" 相应I/O模式类的版本,并拼接数据 将类处理到基类列表的中间;例如:

from plib.stdlib.io.async import SerialClientMixin, SerialBase
from plib.stdlib.io.data import TerminatorReadWrite

class AsyncSerialClientWithTerminator(SerialClientMixin,
    TerminatorReadWrite, SerialBase): pass

这有点笨拙,但很有必要,因为读/写处理 在mro中的client/server类之前 ,而在 基本设备类型,用于下面的协作调用 正常工作的功能。然而,由于模式是 在每种情况下都是一样的,它可以自动化,这已经在 异步 阻塞 子包命名空间,因此 在"手工"完成上面的类构造时,只需添加一个 为您所需的类名添加后缀,因此:

from plib.stdlib.io.async import SerialClientWithTerminator

带终结者的 后缀(或者,交替地, 和shutdown 或者 withreadwrite )将导致与上述类等价的 定义动态发生,以便生成的类出现 在 plib.stdlib.io.async 命名空间中(当然 plib.stdlib.io.blocking 命名空间具有相同的功能)。 然而,一旦这是第一次发生,类定义 存储在适当的命名空间中,因此 相同的类名(在应用程序的不同模块中)将不会 重新进行"飞行中"的构建;他们将只检索 以前构造的类对象。

上述机器也可根据您自己的习惯使用 读/写处理类;异步和阻塞子包 每个导出函数 如上所述的动态类定义,但是使用您的自定义读/写 类而不是内置的类。你只要通过就行了 函数所需I/O类的名称和自定义 读/写类对象:

from plib.stdlib.io import async

class CustomReadWrite(object):
    # class definition

MyAsyncSerialClient = async.get_readwrite_class('SerialClient',
    CustomReadWrite)

API注释 :此子包的目标之一是提供 为所有不同类型的I/O提供通用、一致的API,以便 切换特定功能的特定实现 因为另一个可以对应用程序的其余部分透明地执行 代码。因此,所有可用类都遵循相同的基本模式 混合各种功能:从左到右 在类的mro中,可以找到端点的类型(客户端或 服务器mixin类,可专门用于I/O类型)。 数据格式的类型(如果有)(来自 读写 模块),以及I/O的类型,包括设备类型 (插座、串行端口等)、模式(非阻塞/异步vs. 以及基本数据处理。此外,每个端点类型都有 独立于特定类型的I/O和模式的公共API;A 客户机始终可以使用 客户机通信 方法发送 向服务器发送数据并接收响应;服务器始终可以使用 启动自身的 永远服务方法;以及所有I/O对象 重写相同的方法以实现特定于应用程序的 功能: 处理数据 ,处理输入的数据, 以及查询完成,以确定何时应该 关闭。(要查看所有这些操作的示例,请查看测试 测试套件和它的库模块, stdlib_io_testlib.py ;库模块可以使用相同的 混合类以实现 测试套件中I/O类的不同组合。)

plib.utils

此子包包含一些其他有用的 函数和模块,以及 moduleproxy 类 参考上述内容。

plib.xml

此子包需要使用 非常快的libxml2库提供了pythonic api 类似于elementtree。改用 lxml 的原因 元素树本身有两个额外的键 功能:

  • 自定义元素类:这里的 模块 子包通过使用元类在这个特性的基础上构建 自动生成和验证DTD,但是 这项功能对于许多XML应用程序也非常有用。
  • 完全和快速xpath支持:这是xml中的关键 首先提示我编写此子包的应用程序。 是的,我知道还有很多其他python xml包 这是xpath;关键是让它 加上标准 elementtree api 加上 libxml2 的速度

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
传递Java处理类类型参数的方式的参数   java安卓中间层admob在logcat中导致大量GC_FOR_ALLOC释放消息   java Vert。x Http请求未将参数分配为配置   java中多线程的输出不正确   如何减少java本地线程的冗余   java不完全分块结果   使用OpenCv时java中的Mat数据类型不受支持错误   Java中的正则表达式不工作,而同一正则表达式在shell中工作   java如何从数组中删除元素?   JDBCJava。sql。SQLException:[Microsoft][ODBC Microsoft Access驱动程序]操作必须使用可更新的查询   java如何以对角线打印字符串变量的字符?   SonarQube 5.2的java自定义插件生成NoClassDefFoundError   macos使用Java应用程序打开浏览器选项卡