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

plib的Python项目详细描述


PLIB子包

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

(注意:这是plib as的最终版本 包括其所有子包的完整包。下一个 plib版本是stdlib的beta版本 子包,然后是gui和io子包。这个 XML子包可能稍后发布,也可能稍后不发布; `` lxml``自从plib.xml上次出现以来,包有了很大的发展 测试。"plib.gui"和"plib.io"版本将分别 需要"plib.stdlib",因此"pip install plib.gui"或 `` pip install plib.io``还应该安装``plib.stdlib``'。 这样拆分子包只允许您安装 你需要什么,也允许每个子包 独立于其他发布计划。)

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实现了一些 小部件(特别是表和列表/树视图)非常重要 不如wxwidgets,所以 GTK最终更依赖于丑陋的黑客行为。

plib.io

此子包包含封装各种形式的类。 客户端/服务器I/O通道的数量。它被组织成子包 使命名空间更易于使用。首先, 子包包含实现公共基本 其他plib.io构建的功能。

剩下的大部分子包分为三大类, 给定类别中的每个子包都包含相同的基本 类名,这样更容易记住。分类如下:

  • 设备类型: 插座 串行 。每种设备类型都有 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,并且a 包含使用api的高级类的子包。 最后,还有一个chatgen模块,它包含一个简单的 类, chat_replies ,该类从远程服务器生成答复 作为一个生成器和一个实现自动 混音功能描述如下。

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

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

class AsyncSerialClientWithTerminator(SerialClientMixin,
    TerminatorReadWrite, SerialBase): pass

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

from plib.io.async import SerialClientWithTerminator

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

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

from plib.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对象 重写相同的方法以实现特定于应用程序的 功能: 处理数据 ,处理输入的数据, 以及查询完成,以确定何时应该 关闭。(要查看所有这些操作的示例,请查看测试 测试套件和它的库模块, io_testlib.py ;库模块可以使用相同的 混合类以实现 测试套件中I/O类的不同组合。)

plib.stdlib

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

以下模块或子包在 T.PLstdlib 命名空间:

  • 内置模块包含一些应该 python内置项,但不是。 内置命名空间的函数;这对于 交互式外壳。函数也可以直接导入 从 plib.stdlib.builtins ,使其更易于理解 模块代码中的功能来源。
  • 类的子包提供了一些其他有用的 上课。
  • classtools模块提供了一些实用程序 具有类和类属性。
  • 命令行模块为命令提供有用的实用程序 线路程序和交互式外壳。
  • coll子包提供了各种集合类, 包括建立在 集合之上的抽象集合 来自标准库的ABC。
  • comm 子包为管理和 与子线程和进程通信。
  • decotools模块为 与装修师合作。
  • 子包为函数提供了一个名称空间 (以及将来可能的其他对象)从 使用python/c api编写的扩展模块。将军 plib的哲学是尽一切可能 python,因此此子包中出现的唯一函数 是那些本质上不能在纯 蟒蛇。< /LI>
  • fdtools模块提供了处理文件的实用程序 描述符。
  • imp 模块提供 import_from_模块的功能, 它应该在标准库的importlib模块中 但不是。:)
  • ini 子包实现了一个抽象的"ini file"api 在posix系统上使用configparser和windows注册表 在Windows系统上。这个api允许配置文件 使用python列表和dict声明的结构。
  • iters模块提供各种处理 或者返回iterables。
  • 本地化模块为获取 特定于地区的信息。
  • 邮件模块为 从程序发送电子邮件。
  • mathlib模块提供了一些附加的数学函数 以补充标准库中的内容。
  • net 模块提供获取信息的实用程序 关于网络。
  • 选项模块为 argparse模块允许您表达您的选择 以python列表、元组和dict的形式进行配置。
  • ostools 模块提供了使用 操作系统。
  • proc 模块为获取 子流程的输出。
  • sigtools模块提供了 信号处理的自管道技巧。
  • 字符串模块为 使用字符串。
  • systools模块公开了一些有用的变量 有关python运行时系统和plib本身的信息。
  • 定时器模块提供计时代码的功能 标准库的 timeit 模块的替代api 当计时功能 作为对象,而不是源代码字符串。
  • tztools模块提供了一些有用的子类 基于python文档中的 datetime 模块, 以及返回本地系统时区名称的函数。
  • util子包提供了moduleproxy类 被许多plib子包使用。查看文档字符串 用于类和使用它的子包的详细信息。

plib.xml

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

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

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

推荐PyPI第三方库


热门话题
java使用Eclipse Helios for Web项目   java指定行。作为编译器设置的分隔符?   osm映射中带有osmdroid的java标记   java Android ClassNotFoundException在路径:DexPathList上未找到类   java从j2me调用GWT方法   更新到java 8后的aspectj问题   如何仅从根元素java,com提取文本内容。滴虫软件。是的。html   安卓公司。谷歌。火基。数据库DatabaseException:未能转换java类型的值。将字符串改为长字符串   从java中的方法返回arraylist变量   java如果将引用重新分配给同步块内的锁对象,会是什么?   java下载。使用spring mvc的资源文件中的xlsx文件   java Eclipse提供了什么工具来运行Eclipse中未包含的程序?   spring boot Java泛型如何读取传递给泛型方法的类型上的字段或调用方法   Javacard中的javaecdsa签名