一个使用CFFI封装Windows函数的Python库
项目描述
使用CFFI的Python Windows包装器
pywincffi 是使用Python和 cffi 库封装某些Windows API函数的包装器。该项目最初创建是为了帮助Twisted项目摆脱对 pywin32 的依赖。欢迎对pywincffi提供的API进行扩展的贡献。
该项目背后的核心目标和设计原则是
在实现和分发方面,使用Windows API函数应该更容易。
应支持Python 2.7和3.x,从单个代码库中,无需让pywincffi的消费者担心如何使用库。
类型转换、错误检查和其他“C样”代码应在可能的情况下由库负责。
pywincffi提供的API应尽可能镜像其Windows对应项,以便更轻松地使用MSDN文档作为参考。
文档和错误消息应具有描述性、一致性、完整性和可访问性。应提供更多复杂用例的示例。
对于贡献者,无论贡献者来自哪个平台,都应能够进行开发和测试。
开发
本节提供了开发过程的基本概述,包括主要目标。这并非详尽无遗,但在提交拉取请求之前应该是一个很好的介绍。
支持和文档
除了本说明之外,还有两个地方您可以获得一些帮助
https://pywincffi.readthedocs.org/en/latest/dev/ - 超出了本说明的范围。
https://groups.google.com/forum/#!forum/pywincffi - 讨论组,用于提问等。
Python 版本支持
本项目支持 Python 2.7 及以上版本,包括 Python 3.x。不包含 2.x 和 3.x 支持的 PR、补丁、测试等将不会合并。目标是在同一个代码库中同时支持 Python 的两个主要版本,而不是主要依赖于 2to3、six 或其他库。
文档
该库的文档托管在 Read The Docs 上。它直接使用 sphinx 从本库生成。
virtualenv env env/bin/activate pip install -r dev_requirements.txt pip install -e . cd docs make html
构建过程还会构建文档,以确保没有明显的问题(包括断链)。
函数文档
Windows API 函数通常按照以下格式进行文档化
def DuplicateHandle(arg1, kwarg1=None):
"""
A brief message about this function.
.. seealso::
<url to the MSDN API documentation for this function>
:param type arg1:
Brief information about this argument
:keyword type kwarg1:
Brief information about this keyword include it's default
and how it's handled within the function.
:raises SomeException:
Some information on when this exception will be raised
:rtype: type
:return:
Information about the data that's returned
"""
需要注意的是,文档中包含一个 seealso 段落。这通常用于引用 MSDN 文档,但也可以用于引用示例、白皮书或其他可能有助于描述函数的参考资料。
有关添加新函数的详细信息,请参阅此处
测试
持续集成
为了始终如一地确保代码的最高质量,以下服务被用于测试或分析每个提交和拉取请求
AppVeyor - 运行 unittests,构建 wheel 文件、MSIs 和其他可用于发布的输出工件。
Travis - 在代码库上运行 pep8 和 pylint 命令行工具,并对代码库进行测试。这也构建了文档,因此可以轻松地发现文档问题。
Codecov - 在 AppVeyor 上运行测试后分析并显示代码覆盖率结果。结果将发布回拉取请求。
ReadTheDocs. - 文档构建和发布的官方位置。这通常用于合并到 master 分支。
额外测试
如上所示,除了 unittests 之外还有许多测试。要在 Windows 上运行所有测试,就像持续集成系统所做的那样,您可以运行 test.bat
> check.bat
这将
检查库和测试的代码风格。
运行所有 unittests。
构建 wheel 文件。
构建文档,并将警告视为错误。
请注意,这不会为您设置虚拟环境或构建环境。因此,如果您无法构建库或缺少依赖项,则上述可能失败。
Vagrant
如上所述的持续集成服务消除了在本地工作站上设置 pywincffi 开发的需要,即使您没有运行 Windows。然而,在某些情况下,在本地机器上工作可能更快或更容易。
如果您没有运行 Windows 或您没有在机器上开发 pywincffi 所需的工具,您可以使用 Vagrant 构建一个 Windows 机器并开始开发。有关此过程的更详细说明,请参阅
https://pywincffi.readthedocs.org/en/latest/dev/vagrant.html
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
pywincffi-0.5.0.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6a982f43e15474f737b9b89c3cce39470ae647df469258629214a83a2493706a |
|
MD5 | 893d177b81c3ecdefa967ccbb0683644 |
|
BLAKE2b-256 | f2fd12298c7f36b585e6870bee0d8921dc74b3d9dc5ff57fed3416c6f2c58dd6 |