变更日志

版本遵循 语义版本控制 (<major>.<minor>.<patch>)。向后不兼容(破坏性)变更仅在主要版本中引入,并在发布的 **弃用** 部分提前通知。

要包含在 v1.2.3.dev11+ge4ea18f 中(如果存在)

v1.2.3.dev11+ge4ea18f [未发布草稿]

(2024-07-17)

没有重大变更。


已发布版本

v1.2.2

(2024-06-27)

错误修正

  • 通过 SCP 下载大于 64kB 的文件不再失败 – 由 @Jakuje 贡献。

    GitHub 上的相关问题和拉取请求: #621.


v1.2.1

(2024-06-27)

错误修正

  • 通过 SCP 下载不存在的远程文件不再导致程序崩溃 – 由 @Jakuje 贡献。

    GitHub 上的相关问题和拉取请求: #208, #325, #620.

打包更新和下游说明

面向贡献者的变更


v1.2.0.post4

(2024-06-09)

打包更新和下游说明

  • 将源代码分发长描述中的 gh 角色替换为更简单的形式,不再尝试创建指向任意 GitHub 地址的 URL – 由 @webknjaz 贡献。

    GitHub 上的相关提交: f4ad1b76.

  • 树内 PEP 517 构建后端的正则表达式已修复,以正确替换“project”替换 – 由 @webknjaz 贡献。

    之前,它会生成很多噪音,而不是一个好的描述。但现在不再会了。

    GitHub 上的相关问题和拉取请求: #92752210.


v1.2.0.post2

(2024-06-08)

打包更新和下游说明

  • 自动化现在将长描述和 GitHub 讨论/发布中的“project”RST 替换 – 由 @webknjaz 贡献。

    GitHub 上的相关提交: 13374a71.

  • CI/CD 自动化已修复,以便将变更日志更新包含到源代码分发 tarball 中 – 由 @webknjaz 贡献。

    GitHub 上的相关提交: 627f718d.


v1.2.0

(2024-06-07)

错误修正

  • ansible-pylibssh 在接收到 EOF 或通道未显式关闭时不再崩溃 – 由 @pbrezina 贡献。

    之前,如果调用 channel.recv 并且 libssh 返回 SSH_EOF 错误,ansible-pylibssh 会崩溃。它还会在通道未显式关闭且会话对象先被垃圾回收的某些特殊情况下崩溃。

    GitHub 上的相关问题和拉取请求: #576.

功能

  • 开始公开暴露 SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPESSSH_OPTIONS_HOSTKEYS 选项 – 由 @Qalthos 贡献。

    GitHub 上的相关问题和拉取请求: #527.

  • request_exec() 方法添加到 Channel 类中。它提供了调用底层 libssh 库的相应低级 C-API 的接口 – 由 @pbrezina 贡献。

    此外,现在可以在同一类中使用以下对 libssh 的调用:request_exec()send_eof()request_send_signal()is_eof,后者作为 property 公开。

    GitHub 上的相关问题和拉取请求: #576.

改进的文档

  • 修复了 Session.connect() 文档字符串中“Connect”的拼写错误 – 由 @donnerhacke 贡献。

    GitHub 上的相关问题和拉取请求: #474.

  • 安装指南 中添加了一条关于从源代码安装时如何设置编译器标志的提示 – 由 @webknjaz 贡献。

    GitHub 上的相关问题和拉取请求: #499.

  • 修复了使用 Channel.exec_command() 在代码片段中调用远程命令的示例 – 由 @pbrezina 贡献。

    它之前展示的版本不可用。

    GitHub 上的相关问题和拉取请求: #576.

打包更新和下游说明

  • 逻辑中存在一个缺陷,该缺陷会将项目目录复制到一个临时文件夹中,当 TMPDIR 设置为项目子目录路径时,会导致无限递归。这是由于使用 pyproject-rpm-macros 在 Fedora 及其下游发生的。它仅与 pip wheel 兼容,不会影响 pyproject-build 用户。

    – 由 @hroncok@webknjaz 贡献。

    GitHub 上的相关提交: 89c9b3a.

  • 从现在开始,新发布的发布分发包工件将通过 Sigstore 签名 – 由 @webknjaz 贡献。

    这是 GitHub Actions CI/CD 工作流自动化的一部分,签名被上传到相应的 GitHub 发布页面。

    GitHub 上的相关提交: 986988a.

  • 平台特定的 macOS 轮子现在使用来自 https://pythonlang.cn 的 Python 解释器构建。它们被标记为 macosx_10_9 – 作者 @webknjaz.

    GitHub 上的相关问题和拉取请求: #333.

  • 构建时依赖的 toml 已被 tomli 替换 – 作者 @webknjaz.

    在 Python 版本低于 3.11 的情况下,才会拉取 tomli 分发版。在 3.11 及更高版本中,现在使用标准库模块 tomllib 代替。

    GitHub 上的相关问题和拉取请求: #501.

  • 在 Python 3.7 及更高版本中,开始使用内置的 setuptools-scm Git 归档支持 – @webknjaz.

    GitHub 上的相关问题和拉取请求: #502.

  • 增加了对 Python 3.12 的支持 – 作者 @Qalthos.

    现在它在 CI 中得到测试,并通过 Trove 分类器进行宣传。

    GitHub 上的相关问题和拉取请求: #532.

  • 构建时依赖的 Cython 现在在 Python 3.12 及更高版本中具有 3.0 的最小版本 – 作者 @webknjaz.

    在较旧的 Python 版本下,以前的 Cython 版本仍然能够构建项目。

    GitHub 上的相关问题和拉取请求: #540.

  • PEP 660 现在已启用 – @webknjaz.

    以前,由于对 PEP 517 挂钩重新导入的限制,我们的树内构建后端丢失了在较新版本的 setuptools 中实现的 非 PEP 517 挂钩,但在较早的版本中没有。现在通过使用通配符重新导出 setuptools 公开的所有内容来解决此问题。

    GitHub 上的相关问题和拉取请求: #541.

  • 构建时依赖 setuptools-scm 的 CI 固定版本更新为 8.1.0 – 此版本修复了 Git 2.45.0 引入的日期解析不兼容性 (pypa/setuptools_scm#1038, pypa/setuptools_scm#1039) – 作者 @webknjaz.

    GitHub 上的相关问题和拉取请求: #601.

面向贡献者的变更

  • Read The Docs 上标记的发布版本构建的 变更日志 页面不再尝试显示草稿部分 – 作者 @webknjaz.

    GitHub 上的相关提交: 852d259.

  • 调整了发布工作流自动化,以便在构建源分发版时,在尝试创建标签之前预先配置 Git – 作者 @webknjaz.

    GitHub 上的相关提交: f07296f.

  • 构建 macOS 平台特定轮子的 CI 配置切换到使用 cibuildwheel – 作者 @webknjaz.

    GitHub 上的相关问题和拉取请求: #333.

  • UBI9 CI 运行时中的 OS 级 tox 包升级到 v3.28.0 – 作者 @Qalthos.

    GitHub 上的相关问题和拉取请求: #461, #473.

  • 修复了 Session.connect() 文档字符串中“Connect”的拼写错误 – 由 @donnerhacke 贡献。

    GitHub 上的相关问题和拉取请求: #474.

  • Packit CI 对互联网的访问已恢复 – 作者 @Qalthos.

    GitHub 上的相关问题和拉取请求: #507.

  • 开始在 CI/CD 基础设施中构建用于测试和打包的 manylinux_2_28 基础镜像 – 作者 @Qalthos.

    GitHub 上的相关问题和拉取请求: #533.

  • 切换回使用 Cython 的原生插件来衡量代码覆盖率 – 作者 @webknjaz.

    GitHub 上的相关问题和拉取请求: #538.

  • 为面向贡献者和下游的补丁添加了单独的变更日志片段类型 – 作者 @webknjaz.

    它们相应的标识符分别是 contribpackaging。它们旨在用于更准确的分类,否则会使用 misc

    GitHub 上的相关问题和拉取请求: #539.

  • PEP 660 现在已启用 – @webknjaz.

    这实际上意味着生态系统本地的可编辑安装模式开始正常工作。

    GitHub 上的相关问题和拉取请求: #541.

  • 用于构建 manylinux 轮子的重复作业矩阵现在位于单个 GitHub Actions CI/CD 可重用工作流定义中。

    @webknjaz

    GitHub 上的相关问题和拉取请求: #559.

  • 文本作业的重复作业矩阵现在位于单个 GitHub Actions CI/CD 可重用工作流定义中。

    @webknjaz

    GitHub 上的相关问题和拉取请求: #560.

  • 修复了 发布指南 文档中发布工作流的位置 – 作者 @Qalthos.

    GitHub 上的相关问题和拉取请求: #565.

  • 构建时依赖 setuptools-scm 的 CI 固定版本更新为 8.1.0 – 此版本修复了 Git 2.45.0 引入的日期解析不兼容性 (pypa/setuptools_scm#1039, pypa/setuptools_scm#1038) – 作者 @webknjaz.

    GitHub 上的相关问题和拉取请求: #601.

  • CI/CD 配置已修复,允许发布到 PyPI 和其他目标,而无需考虑测试阶段的结果。这曾经是工作流定义中的一个错误,现在已修复。

    – 作者 @pbrezina@webknjaz

    GitHub 上的相关问题和拉取请求: #602.


v1.1.0 (2022-12-05)

功能

  • 开始使用 libssh v0.9.6 构建 manylinux 轮子 – 作者 @webknjaz (#441)

弃用 (将在下一个主要版本中移除)

  • 由于 GitHub 正在停用他们的 CI 镜像,因此该项目不再在 Ubuntu 18.04 VM 下测试 – 作者 @webknjaz (#379)

文档

其他

  • 开始使用 Packit 服务测试 RPM 包规格 – 作者 @webknjaz@TomasTomecek (#227, #246)

  • 从树内 PEP 517 构建后端中删除了 Python 2 兼容性代码的剩余部分 – 作者 @webknjaz (#377)

  • 修复了从 RPM 规范中的 pyproject.toml 中移除 expandvars 的问题 – 作者 @webknjaz

    在此补丁之前,sed 调用会从那里移除整个 build-system.requires 条目,这种情况很少见,但现在不会再发生了。 (#378)

  • 声明了对 CPython 3.11 的正式支持 – 作者 @Qalthos (#396)

  • 开始使用 Cython v0.29.32 构建 sdist – 作者 @webknjaz (#399)

  • 开始使用 Cython v0.29.32 构建 RPM – 作者 @webknjaz (#402)

  • 在测试中添加了 SSH 连接重试助手 – 作者 @webknjaz (#405)

v1.0.0 (2022-09-14)

功能

  • 在使用键盘交互式身份验证时,向 connect() 添加了 password_prompt 参数以覆盖默认提示“password:”。 – by @Qalthos (#331)

  • 添加了对 :fd: 套接字选项的支持。 – by @sabedevops (#343)

其他

  • 重构构建脚本以修复 manylinux 容器生成。 – by @Qalthos (#321)

  • 重新启用 s390x 上的 CI 构建。 – by @Qalthos (#322)

v0.4.0 (2022-04-26)

错误修复

  • 改进 channel.exec_command 以始终使用新创建的 ssh_channel 来避免重复调用时的段错误。 – by @Qalthos (#280)

  • 修复了 pylibsshext.session.Session.authenticate_interactive() 中的密码提示匹配,以去除空格,检查提示是否仅以 password: 结尾,并添加了一些额外的日志记录。 – by @dalrrard (#311)

向后不兼容的更改

  • 放弃了对 Python 2.7 和 3.5 的支持,并标记了对 3.10 的支持。 – by @Qalthos (#314)

v0.3.0 (2021-11-03)

错误修复

  • sftp.sftp_get 更改为以字节形式写入文件,而不是假设文件是有效的 UTF8。 – by @Qalthos (#216)

功能

  • 开始构建针对 AARCH64、ppc64le 和 s390x 架构的特定平台 manylinux2010manylinux2014manylinux_2_24 轮子,如 PEP 599PEP 600 中所述。 – @webknjaz (#187)

  • 添加了 gssapi-with-mic 身份验证支持。 – by @Qalthos (#195)

文档

  • 更正安装指南中指向 pip 升级文档的链接。 – @webknjaz (#225)

其他

  • 开始在 GitHub Actions CI/CD 中使用 Buildah+Podman 构建 AARCH64 基础镜像。 – @webknjaz (#181)

  • 将使用 pep517 库切换到 build CLI。 – @webknjaz (#199)

  • 将树内 PEP 517 构建后端重新组织为多个子模块,将入口点移动到 pep517_backend.hooks,这也便于提取由最终用户(打包人员)通过 build CLI 命令传递的自定义 config_settings。 – @webknjaz (#200)

  • 更新 manylinux 构建脚本,以便使用启用 GSSAPI 的 libssh 进行构建。 – by @Qalthos (#203)

  • 添加了一个初始 RPM 规范,并在 CI 中持续测试。 – @webknjaz (#205)

  • 当 SFTP 写入错误被引发时添加了额外的细节。 – by @Qalthos (#216)

  • 使 auditwheel 仅在生成的轮子名称中保留一个平台标签。 – @webknjaz (#224)

  • 改进 manylinux 构建脚本,以预期针对 1/2010/2014 版本及其在 auditwheel repair 之后的 PEP 600 对应版本生成的双重别名 manylinux 标签。 – @webknjaz (#226)

  • 在 Fedora 的 RPM 规范中启用自测检查。 – @webknjaz (#228)

  • 在 CentOS 的 RPM 规范中启用自测检查。 – @webknjaz (#235)

  • 在 RHEL 的 RPM 规范中启用自测检查。 – @webknjaz (#236)

  • NAME = "VALUE" 添加到 flake8-eradicate 白名单,以解决 flake8-eradicate 1.1.0 中引入的测试误报。 – by @Qalthos (#258)

  • 停止在 GitHub Actions CI/CD 中对 Ubuntu 16.04 下的 pylibssh 二进制轮子进行测试,因为 Ubuntu 16.04 现在已到达生命周期末期。 – @webknjaz (#260)

  • 修复了在 GitHub Actions CI/CD 中的 Fedora 下,在 rpmbuild 出现问题时快速失败的情况。 – @webknjaz (#261)

  • 在 Fedora 下将 python3-pip 声明为构建依赖项,修复了在 GitHub Actions CI/CD 中的 Fedora 下的 RPM 创建作业。 – @webknjaz (#262)

  • 将 pre-commit 配置中的 git 协议替换为 https,因为 GitHub 已关闭 git 协议访问。 – by @Qalthos (#266)

v0.2.0 (2021-03-01)

错误修复

  • 修复了在某些发行版上构建时出现的 undefined symbol: ssh_disconnect 和相关问题。 – by @Qalthos (#63, #153, #158)

  • 修复了当 ssh_channel_read_nonblocking 失败时出现的 "Negative size passed to PyBytes_FromStringAndSize"。 – by @Qalthos (#168)

功能

文档

其他

v0.1.0 (2020-08-12)

错误修复

  • 增强了 sftp 错误处理代码,使其与 libssh 错误消息匹配。 – by @ganeshrn (#27)

  • 修复了会话超时问题,ssh_options_set 预期超时的数据类型是 long int 类型。 – by @ganeshrn (#46)

  • 修复了 sftp 文件获取问题。在 py2 上,如果字节成功写入文件,则文件 write() 方法返回 None,而在 py3 上,它返回写入文件的字节总数。添加了一个修复程序,仅在 write() 未返回 None 的情况下检查写入的字节数。 – by @ganeshrn (#58)

  • 修复了双重关闭问题,在 __dealloc__() 中添加了逻辑以释放为通道分配的内存。 – by @ganeshrn (#113)

功能

  • 添加了用于 libssh 客户端 API 的 Cython 扩展的初始提交。 – by @ganeshrn (#1)

  • 为会话添加了 proxycommand 支持,并将会话异常更新为 LibsshSessionException - 由 @ganeshrn (#10)

  • 添加了对带有身份验证的主机密钥检查的支持 - 由 @ganeshrn (#15)

  • 将 pylibssh 目录更改为 pylibsshext 以避免名称空间冲突 - 由 @ganeshrn (#25)

  • 添加了 sftp get 功能,用于从远程主机获取文件 - 由 @amolkahat (#26)

  • 添加了对接收远程 shell 批量响应的支持 - 由 @ganeshrn (#40)

  • 添加了对键盘身份验证方法的支持 - 由 @Qalthos (#105)

向后不兼容的更改

  • 将包名称更新为 ansible-pylibssh 以反映该库仅打算实现实现 Ansible 连接插件所需的 API 集 - 由 @ganeshrn (#1)

文档

杂项

  • 更新了 requirements 文件,用 requirements-build.in 替换了 requirements.txt - 由 @akasurde (#14)

  • 使 tox 的主环境使用树内 PEP 517 构建后端 - 由 @webknjaz (#72)

  • 重构了 towncrier 扩展中的 sphinx RST 解析 - 由 @ewjoachim (#119)

  • 修复了树内 sphinx 扩展中的指令,使其始终触发变更日志文档重建,以便它可以从磁盘获取任何变更日志片段 - 由 @webknjaz (#120)

  • 将 Townrier 片段 README 文档标题改为副标题 - 由 @webknjaz

    这样它就不再在侧边栏中显示为单独的项目。 (#125)

  • 通过 MyST 解析器 将 Markdown 支持集成到文档中 - 由 @webknjaz (#126)

  • Read the Docs 上的构建器切换为 dirhtml,因此它现在为网站生成基于目录的 URL 布局 - 由 @webknjaz (#127)

  • 启用了 sphinx.ext.autosectionlabel Sphinx 扩展 以自动为文档部分生成引用目标,可以使用 :ref: 链接到这些目标 - 由 @webknjaz (#128)