跳转到主要内容

一个使用CFFI封装Windows函数的Python库

项目描述

使用CFFI的Python Windows包装器

build status build status (pylint and pep8) code coverage documentation badge

pywincffi 是使用Python和 cffi 库封装某些Windows API函数的包装器。该项目最初创建是为了帮助Twisted项目摆脱对 pywin32 的依赖。欢迎对pywincffi提供的API进行扩展的贡献。

该项目背后的核心目标和设计原则是

  • 在实现和分发方面,使用Windows API函数应该更容易。

  • 应支持Python 2.7和3.x,从单个代码库中,无需让pywincffi的消费者担心如何使用库。

  • 类型转换、错误检查和其他“C样”代码应在可能的情况下由库负责。

  • pywincffi提供的API应尽可能镜像其Windows对应项,以便更轻松地使用MSDN文档作为参考。

  • 文档和错误消息应具有描述性、一致性、完整性和可访问性。应提供更多复杂用例的示例。

  • 对于贡献者,无论贡献者来自哪个平台,都应能够进行开发和测试。

开发

本节提供了开发过程的基本概述,包括主要目标。这并非详尽无遗,但在提交拉取请求之前应该是一个很好的介绍。

支持和文档

除了本说明之外,还有两个地方您可以获得一些帮助

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 - 在代码库上运行 pep8pylint 命令行工具,并对代码库进行测试。这也构建了文档,因此可以轻松地发现文档问题。

  • 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 (67.2 kB 查看哈希值)

上传时间

构建分发

pywincffi-0.5.0.win-amd64-py3.6.msi (167.9 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win-amd64-py3.5.msi (167.9 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win-amd64-py3.4.msi (163.8 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win-amd64-py3.3.msi (229.4 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win-amd64-py2.7.msi (229.4 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win32-py3.6.msi (163.8 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win32-py3.5.msi (163.8 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win32-py3.4.msi (163.8 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win32-py3.3.msi (229.4 kB 查看哈希值)

上传时间

pywincffi-0.5.0.win32-py2.7.msi (229.4 kB 查看哈希值)

上传时间

pywincffi-0.5.0-cp36-cp36m-win_amd64.whl (83.9 kB 查看哈希值)

上传时间 CPython 3.6m Windows x86-64

pywincffi-0.5.0-cp36-cp36m-win32.whl (81.0 kB 查看哈希值)

上传时间 CPython 3.6m Windows x86

pywincffi-0.5.0-cp35-cp35m-win_amd64.whl (83.9 kB 查看哈希值)

上传时间 CPython 3.5m Windows x86-64

pywincffi-0.5.0-cp35-cp35m-win32.whl (81.0 kB 查看哈希值)

上传时间 CPython 3.5m Windows x86

pywincffi-0.5.0-cp34-cp34m-win_amd64.whl (81.5 kB 查看哈希值)

上传时间 CPython 3.4m Windows x86-64

pywincffi-0.5.0-cp34-cp34m-win32.whl (79.6 kB 查看哈希值)

上传时间 CPython 3.4m Windows x86

pywincffi-0.5.0-cp33-cp33m-win_amd64.whl (81.5 kB 查看哈希值)

上传时间 CPython 3.3m Windows x86-64

pywincffi-0.5.0-cp33-cp33m-win32.whl (79.6 kB 查看哈希值)

上传时间 CPython 3.3m Windows x86

pywincffi-0.5.0-cp27-cp27m-win_amd64.whl (81.6 kB 查看哈希值)

上传时间 CPython 2.7m Windows x86-64

pywincffi-0.5.0-cp27-cp27m-win32.whl (79.6 kB 查看哈希值)

上传时间 CPython 2.7m Windows x86

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面