Skip to content

Releases: ansible/pylibssh

v1.4.0

16 Mar 11:33

Choose a tag to compare

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.4.0

🌱 v1.4.0 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/23120213721

v1.4.0

(2026-03-15)

Bug fixes

  • Fixed the log level mapping to cover the entire libssh range -- by
    @Jakuje and @webknjaz.

    Previously it was not possible to set the most verbose libssh log
    level SSH_LOG_TRACE to get the most verbose log messages useful for
    debugging connection issues.

    Related issues and pull requests on GitHub: #597.

Features

  • Made libssh use the Python logging system -- by @Jakuje and
    @webknjaz.

    Previously the underlying libssh library was writing its logs
    directly from the C-level into stderr, which caused inconsistent
    behavior.

    The default log level is now set to ANSIBLE_PYLIBSSH_TRACE and the
    downstream loggers are able to trim the verbosity down. If you need
    performance, it is possible to disable logging on the libssh side at
    the source by setting a lower logging value, for example:

    ssh_session.set_log_level(ANSIBLE_PYLIBSSH_NOLOG)

    Additionally, the log level can be now be set also through the session
    initializer:

    ssh = Session(log_verbosity=ANSIBLE_PYLIBSSH_TRACE)

    or the connect() method arguments:

    ssh.connect(log_verbosity=ANSIBLE_PYLIBSSH_TRACE)

    Setting any levels imported from !logging is also supported.

    Related issues and pull requests on GitHub: #597.

Packaging updates and notes for downstreams

  • Started shipping binary armv7l wheels -- by @webknjaz.

    Related issues and pull requests on GitHub: #648.

  • Upgrading cibuildwheel to v2.22.0 also picked up Python 3.13 and
    enabled respective wheels to be built -- by @webknjaz.

    Related issues and pull requests on GitHub: #648.

  • The CI/CD/packaging infrastructure has been updated to produce
    source distribution <Source Distribution (or "sdist")> file names
    consistent with the requirement of uploading artifacts compliant with
    the core packaging metadata 2.2 or newer to PyPI and TestPyPI -- by
    @webknjaz.

    Along with that, the infrastructure has been adjusted to expect
    625-conforming names in its guard rails checks -- with some
    @cidrblocks help.

    Related issues and pull requests on GitHub: #808, #809.

  • Upgrading cibuildwheel to v3.1.0 also picked up Python 3.14 and
    enabled respective wheels to be built -- by @webknjaz.

    Building the free-threaded wheels remains disabled, though.

    Related issues and pull requests on GitHub: #809, #823.

  • While upgrading cibuildwheel to v3.1.4, its defaults changed to
    attempt building wheels for the RISC-V architecture. This target is
    now disabled explicitly due to the lack of infrastructure -- by
    @webknjaz.

    We may enable it at a later time as a separate dedicated effort.

    Related issues and pull requests on GitHub: #809, #824.

  • Due to cibuildwheel to v3 bundling delocate 0.13.0 that enforces
    deployment-target consistency with the brew-installed copy of the
    libssh in the build jobs, the macOS wheels we build now require
    macOS version 15.0 or newer.

    -- by @cidrblock and @webknjaz

    Related issues and pull requests on GitHub: #809, #824.

  • The core packaging metadata now reflects that we test the project
    under Python 3.13 and 3.14 (with GIL enabled) -- by @cidrblock and
    @webknjaz.

    Related issues and pull requests on GitHub: #809, #825.

  • The pre-cached armv7l images we build for the packaging
    infrastructure are now correctly tagged with the linux/arm/v7 OCI
    platform tag -- by @webknjaz.

    Related issues and pull requests on GitHub: #810.

  • The build backend configuration no longer sets the deprecated
    bdist_wheel.universal setting -- by @webknjaz.

    This does not influence the packaging artifacts in any way.

    Related issues and pull requests on GitHub: #811.

  • The build backend has been configured to exclude .git_archival.txt
    from source distributions built from Git -- by @webknjaz.

    This reduces the number of false positive warning the backend outputs.

    Related issues and pull requests on GitHub: #811.

Contributor-facing changes

  • The repository is now set up to auto-format Python files with Ruff.
    Cython keeps being formatted by cython-lint.

    -- by @webknjaz

    Related commits on GitHub:
    234a2d34,
    a63b6028,
    0e385696.

  • The linting configuration now uses Ruff to run additional checks on
    pure Python modules -- by @webknjaz.

    Related commits on GitHub:
    8170954.

  • cibuildwheel started making use of the armv7l container image
    following its upgrade to v2.22.0 -- by @webknjaz.

    Related issues and pull requests on GitHub: #648.

  • Increased the amount of retries in test to avoid possible timeouts on
    slower systems -- by @Jakuje.

    Related issues and pull requests on GitHub: #777.

  • The SSHD start probe client command is now shielded from external
    environmnent and will no longer attempt using an SSH agent on the
    machine where the tests are involved, nor will it use alternative
    authentication methods -- by @webknjaz.

    Related issues and pull requests on GitHub: #782.

  • Now that the macos-13 runner VM image has been decommissioned, the
    CI and CD jobs have been migrated to use macos-15-intel -- by
    @komaldesai13.

    This includes giving the macOS build job more time to complete as the
    new version is a little slower.

    Related issues and pull requests on GitHub: #791.

  • Updated the version of libssh to the latest release v0.12.0 in the
    cached manylinux build environment container images -- by @Jakuje.

    Related issues and pull requests on GitHub: #797.

  • Updated the bundled version of libssh to 0.12.0 in platform-specific
    wheels published on PyPI -- by @Jakuje.

    Related issues and pull requests on GitHub: #798.

  • Added Fedora and ubi9 images to CI/CD pipeline that are relevant in
    2026 and removed EOL Fedora versions -- by @Jakuje.

    Related issues and pull requests on GitHub: #801.

  • The pre-commit framework configuration has been updated to be in
    sync with awx-plugins and other projects. It now has a few
    additional linters and a workaround for the outdated ones.

    -- by @webknjaz

    Related issues and pull requests on GitHub: #803.

  • The standalone mentions of pylibssh have been replaced with
    ansible-pylibssh in file license headers -- by @Jakuje.

    Related issues and pull requests on GitHub: #804.

  • The CI/CD/packaging infrastructure has been updated to produce
    source distribution <Source Distribution (or "sdist")> file names
    consistent with the requirement of uploading artifacts compliant with
    the core packaging metadata 2.2 or newer to PyPI and TestPyPI -- by
    @webknjaz.

    Along with that, the infrastructure has been adjusted to expect
    625-conforming names in its guard rails checks -- with some
    @cidrblocks help.

    Related issues and pull requests on GitHub: #808, #809.

  • cibuildwheel has been upgraded to v3.1.4 -- by @webknjaz.

    Related issues and pull requests on GitHub: #809, #820, #821,
    #823, #824.

  • The coverage measurement infrastructure now uses the ctrace
    measurement core <config_run_core> across all the Python versions
    consistently -- by @webknjaz.

    Related issues and pull requests on GitHub: #809, #825.

  • The CI now tests wheels built for Python 3.13 and 3.14 -- by
    @cidrblock and @webknjaz.

    Related issues and pull requests on GitHub: #809, #825.

  • The pre-cached armv7l images we build for the packaging
    infrastructure are now correctly tagged with the linux/arm/v7 OCI
    platform tag -- by @webknjaz.

    Related issues and pull requests on GitHub: #810.

  • The build backend configuration no longer sets the deprecated
    bdist_wheel.universal setting -- by @webknjaz.

    This does not influence the packaging artifacts in any way.

    Related issues and pull requests on GitHub: #811.

  • The CI/CD infrastructure has been set up to avoid parts of the
    template injection problem in GitHub Actions workflow definitions. The
    shell entry point has been set to bash for any scripts with extra
    strictness enabled.

    -- by @webknjaz

    Related issues and pull requests on GitHub: #816.

  • The CI/CD and packaging infrastructure now sources the PyPI project
    name from setup.cfg rather than hardcoding it -- by @webknjaz.

    Related issues and pull requests on GitHub: #817.

  • The documentation building infrastructure now integrates
    GitHub-related RST roles using the sphinx-issues extension -- by
    @webknjaz.

    Related issues and pull requests on GitHub: #818.


v1.3.0

12 Oct 01:10

Choose a tag to compare

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.3.0

🌱 v1.3.0 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/18436549816

v1.3.0a1

11 Oct 17:28

Choose a tag to compare

v1.3.0a1 Pre-release
Pre-release

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.3.0a1

🚧 v1.3.0a1 is marked as a pre-release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/18431666269

v1.2.2

27 Jun 17:47

Choose a tag to compare

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.2.2

🌱 v1.2.2 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/9700697462

v1.2.2

(2024-06-27)

Bug fixes

  • Downloading files larger than 64kB over SCP no longer fails -- by
    @Jakuje.

    Related issues and pull requests on GitHub: #621.


v1.2.1

27 Jun 15:35

Choose a tag to compare

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.2.1

🌱 v1.2.1 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/9699128891

v1.2.1

(2024-06-27)

Bug fixes

  • Downloading non-existent remote files via SCP no longer crashes the
    program -- by @Jakuje.

    Related issues and pull requests on GitHub: #208, #325, #620.

Packaging updates and notes for downstreams

  • The RPM specification now opts out of demanding that the compiled
    C-extensions have a Build ID present under EL -- by @webknjaz.

    Related commits on GitHub:
    9053c10,
    aaa1215.

  • The RPM specification has been updated to pre-build the vendored
    copy of setuptools-scm with the isolation disabled, addressing the
    build problem in EL 9 -- by @webknjaz.

    Related commits on GitHub:
    dd85dde.

  • The RPM definition now runs import self-checks when it is built for
    Fedora Linux -- by @webknjaz.

    Related issues and pull requests on GitHub: #615.

Contributor-facing changes

  • RPM builds are now also tested against UBI 9.4 in CI -- by
    @webknjaz.

    Related commits on GitHub:
    e9ad0a7.


v1.2.0.post4

09 Jun 12:07

Choose a tag to compare

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.2.0.post4

🌱 v1.2.0.post4 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/9433633704

v1.2.0.post4

(2024-06-09)

Packaging updates and notes for downstreams

  • Substituting the gh role in source distribution long description
    has been simplify to stop attempting to make URLs to arbitrary
    GitHub addresses -- by @webknjaz.

    Related commits on GitHub:
    f4ad1b76.

  • The in-tree 517 build backend's regular expression has been
    hotfixed to replace the "project" substitution correctly -- by
    @webknjaz.

    Previously, it was generating a lot of noise instead of a nice
    description. But not anymore.

    Related issues and pull requests on GitHub: 9275221.


v1.2.0.post2

08 Jun 23:25

Choose a tag to compare

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.2.0.post2

🌱 v1.2.0.post2 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/9432056614

v1.2.0.post2

(2024-06-08)

Packaging updates and notes for downstreams

  • The automation now replaces the "project" RST substitution in the
    long description and GitHub Discussions/Releases -- by @webknjaz.

    Related commits on GitHub:
    13374a71.

  • The CI/CD automation has been fixed to include changelog updates
    into source distribution tarballs -- by @webknjaz.

    Related commits on GitHub:
    627f718d.


v1.2.0

07 Jun 21:31

Choose a tag to compare

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.2.0

🌱 v1.2.0 is marked as a stable release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/9423162320

v1.2.0

(2024-06-07)

Bug fixes

  • no longer crashes when received EOF or when channel is not
    explicitly closed -- by @pbrezina.

    Previously, crashed if channel.recv was called and libssh
    returned SSH_EOF error. It also crashed on some special occasions
    where channel was not explicitly closed and the session object was
    garbage-collected first.

    Related issues and pull requests on GitHub: #576.

Features

  • Started exposing the SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES and
    SSH_OPTIONS_HOSTKEYS options publicly -- by @Qalthos.

    Related issues and pull requests on GitHub: #527.

  • The request_exec() method was added to the Channel class. It
    exposes an interface for calling the respective low-level C-API of
    the underlying libssh library -- by @pbrezina.

    Additionally, the following calls to libssh are now available in
    the same class: request_exec(), send_eof(),
    request_send_signal() and is_eof which is exposed as a
    :pyproperty.

    Related issues and pull requests on GitHub: #576.

Improved documentation

  • Fixed spelling of "Connect" in the Session.connect() docstring --
    by @donnerhacke.

    Related issues and pull requests on GitHub: #474.

  • Added a tip to the installation guide <Installing |project|> on
    how to set compiler flags when installing from source -- @webknjaz.

    Related issues and pull requests on GitHub: #499.

  • Fixed the example of invoking remote commands by using
    Channel.exec_command() in snippets -- by @pbrezina.

    Its previously showcased version wasn't functional.

    Related issues and pull requests on GitHub: #576.

Packaging updates and notes for downstreams

  • A flaw in the logic for copying the project directory into a
    temporary folder that led to infinite recursion when TMPDIR was
    set to a project subdirectory path. This was happening in Fedora and
    its downstream due to the use of
    pyproject-rpm-macros.
    It was only reproducible with pip wheel and was not affecting the
    pyproject-build users.

    -- by @hroncok and @webknjaz

    Related commits on GitHub:
    89c9b3a.

  • From now on, the published distribution package artifacts for the
    new releases are signed via Sigstore -- by
    @webknjaz.

    This is happening as a part of the GitHub Actions CI/CD workflow
    automation and the signatures are uploaded to the corresponding
    GitHub Release pages.

    Related commits on GitHub:
    986988a.

  • The platform-specific macOS wheels are now built using the Python
    interpreter from https://python.org. They are tagged with
    macosx_10_9 -- by @webknjaz.

    Related issues and pull requests on GitHub: #333.

  • The toml build time dependency has been replaced with tomli --
    by @webknjaz.

    The tomli distribution is only pulled in under Python versions
    below 3.11. On 3.11 and higher, the standard library module
    :pytomllib is now used instead.

    Related issues and pull requests on GitHub: #501.

  • Started using the built-in setuptools-scm Git archive support
    under Python 3.7 and higher -- @webknjaz.

    Related issues and pull requests on GitHub: #502.

  • Added support for Python 3.12 -- by @Qalthos.

    It is now both tested in the CI and is advertised through the Trove
    classifiers.

    Related issues and pull requests on GitHub: #532.

  • The Cython build time dependency now has the minimum version of
    3.0 under Python 3.12 and higher -- by @webknjaz.

    The previous versions of Cython are still able to build the
    project under older Python versions.

    Related issues and pull requests on GitHub: #540.

  • 660 is now enabled -- @webknjaz.

    Previously, due to restrictive 517 hook reimports, our in-tree
    build backend was losing non-PEP 517 <517> hooks implemented in
    newer versions of setuptools but not the earlier ones. This is now
    addressed by reexporting everything that setuptools exposes with a
    wildcard.

    Related issues and pull requests on GitHub: #541.

  • The setuptools-scm build dependency CI pin was updated to 8.1.0 —
    this version fixes a date parsing incompatibility introduced by Git
    2.45.0 (pypa/setuptools_scm#1039 <pypa/setuptools_scm/issues/1038>, pypa/setuptools_scm#1038 <pypa/setuptools_scm/pull/1039>) -- by @webknjaz.

    Related issues and pull requests on GitHub: #601.

Contributor-facing changes

  • The changelog page for the tagged release builds on Read The Docs
    does not attempt showing the draft section anymore -- by @webknjaz.

    Related commits on GitHub:
    852d259.

  • Adjusted the publishing workflow automation to pre-configure Git
    before attempting to create a tag when building a source
    distribution -- by @webknjaz.

    Related commits on GitHub:
    f07296f.

  • The CI configuration for building the macOS platform-specific wheels
    switched to using cibuildwheel -- by @webknjaz.

    Related issues and pull requests on GitHub: #333.

  • The OS-level tox package was upgraded to v3.28.0 in the UBI9 CI
    runtime -- by @Qalthos.

    Related issues and pull requests on GitHub: #461, #473.

  • Fixed spelling of "Connect" in the Session.connect() docstring --
    by @donnerhacke.

    Related issues and pull requests on GitHub: #474.

  • The Packit CI access to the internet has been restored -- by
    @Qalthos.

    Related issues and pull requests on GitHub: #507.

  • Started building manylinux_2_28 base images for testing and
    packaging in the CI/CD infrastructure -- by @Qalthos.

    Related issues and pull requests on GitHub: #533.

  • Switched back to using Cython's native plugin for measuring code
    coverage -- by @webknjaz.

    Related issues and pull requests on GitHub: #538.

  • Added separate changelog fragment types for contributor-and
    downstream-facing patches -- by @webknjaz.

    Their corresponding identifiers are contrib and packaging
    respectively. They are meant to be used for more accurate
    classification, where one would resort to using misc otherwise.

    Related issues and pull requests on GitHub: #539.

  • 660 is now enabled -- @webknjaz.

    This effectively means that the ecosystem-native editable install
    mode started working properly.

    Related issues and pull requests on GitHub: #541.

  • The duplicated jobs matrices for building manylinux wheels now
    reside in a single GitHub Actions CI/CD reusable workflow
    definition.

    -- @webknjaz

    Related issues and pull requests on GitHub: #559.

  • The duplicated jobs matrices of the text jobs now reside in a single
    GitHub Actions CI/CD reusable workflow definition.

    -- @webknjaz

    Related issues and pull requests on GitHub: #560.

  • Fixed the location of release workflow in the Release Guide
    document -- by @Qalthos.

    Related issues and pull requests on GitHub: #565.

  • The setuptools-scm build dependency CI pin was updated to 8.1.0 —
    this version fixes a date parsing incompatibility introduced by Git
    2.45.0 (pypa/setuptools_scm#1039 <pypa/setuptools_scm/issues/1038>, pypa/setuptools_scm#1038 <pypa/setuptools_scm/pull/1039>) -- by @webknjaz.

    Related issues and pull requests on GitHub: #601.

  • The CI/CD configuration was fixed to allow publishing to PyPI and
    other targets disregarding the test stage outcome. This used to be a
    bug in the workflow definition that has now been fixed.

    -- by @pbrezina and @webknjaz

    Related issues and pull requests on GitHub: #602.


v1.2.0rc4

07 Jun 19:51

Choose a tag to compare

v1.2.0rc4 Pre-release
Pre-release

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.2.0rc4

🚧 v1.2.0rc4 is marked as a pre-release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/9421619343

v1.2.0rc4

(2024-06-07)

Bug fixes

  • no longer crashes when received EOF or when channel is not
    explicitly closed -- by @pbrezina.

    Previously, crashed if channel.recv was called and libssh
    returned SSH_EOF error. It also crashed on some special occasions
    where channel was not explicitly closed and the session object was
    garbage-collected first.

    Related issues and pull requests on GitHub: #576.

Features

  • Started exposing the SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES and
    SSH_OPTIONS_HOSTKEYS options publicly -- by @Qalthos.

    Related issues and pull requests on GitHub: #527.

  • The request_exec() method was added to the Channel class. It
    exposes an interface for calling the respective low-level C-API of
    the underlying libssh library -- by @pbrezina.

    Additionally, the following calls to libssh are now available in
    the same class: request_exec(), send_eof(),
    request_send_signal() and is_eof which is exposed as a
    :pyproperty.

    Related issues and pull requests on GitHub: #576.

Improved documentation

  • Fixed spelling of "Connect" in the Session.connect() docstring --
    by @donnerhacke.

    Related issues and pull requests on GitHub: #474.

  • Added a tip to the installation guide <Installing |project|> on
    how to set compiler flags when installing from source -- @webknjaz.

    Related issues and pull requests on GitHub: #499.

  • Fixed the example of invoking remote commands by using
    Channel.exec_command() in snippets -- by @pbrezina.

    Its previously showcased version wasn't functional.

    Related issues and pull requests on GitHub: #576.

Packaging updates and notes for downstreams

  • A flaw in the logic for copying the project directory into a
    temporary folder that led to infinite recursion when TMPDIR was
    set to a project subdirectory path. This was happening in Fedora and
    its downstream due to the use of
    pyproject-rpm-macros.
    It was only reproducible with pip wheel and was not affecting the
    pyproject-build users.

    -- by @hroncok and @webknjaz

    Related commits on GitHub:
    89c9b3a.

  • From now on, the published distribution package artifacts for the
    new releases are signed via Sigstore -- by
    @webknjaz.

    This is happening as a part of the GitHub Actions CI/CD workflow
    automation and the signatures are uploaded to the corresponding
    GitHub Release pages.

    Related commits on GitHub:
    986988a.

  • The platform-specific macOS wheels are now built using the Python
    interpreter from https://python.org. They are tagged with
    macosx_10_9 -- by @webknjaz.

    Related issues and pull requests on GitHub: #333.

  • The toml build time dependency has been replaced with tomli --
    by @webknjaz.

    The tomli distribution is only pulled in under Python versions
    below 3.11. On 3.11 and higher, the standard library module
    :pytomllib is now used instead.

    Related issues and pull requests on GitHub: #501.

  • Started using the built-in setuptools-scm Git archive support
    under Python 3.7 and higher -- @webknjaz.

    Related issues and pull requests on GitHub: #502.

  • Added support for Python 3.12 -- by @Qalthos.

    It is now both tested in the CI and is advertised through the Trove
    classifiers.

    Related issues and pull requests on GitHub: #532.

  • The Cython build time dependency now has the minimum version of
    3.0 under Python 3.12 and higher -- by @webknjaz.

    The previous versions of Cython are still able to build the
    project under older Python versions.

    Related issues and pull requests on GitHub: #540.

  • 660 is now enabled -- @webknjaz.

    Previously, due to restrictive 517 hook reimports, our in-tree
    build backend was losing non-PEP 517 <517> hooks implemented in
    newer versions of setuptools but not the earlier ones. This is now
    addressed by reexporting everything that setuptools exposes with a
    wildcard.

    Related issues and pull requests on GitHub: #541.

  • The setuptools-scm build dependency CI pin was updated to 8.1.0 —
    this version fixes a date parsing incompatibility introduced by Git
    2.45.0 (pypa/setuptools_scm#1039 <pypa/setuptools_scm/issues/1038>, pypa/setuptools_scm#1038 <pypa/setuptools_scm/pull/1039>) -- by @webknjaz.

    Related issues and pull requests on GitHub: #601.

Contributor-facing changes

  • The changelog page for the tagged release builds on Read The Docs
    does not attempt showing the draft section anymore -- by @webknjaz.

    Related commits on GitHub:
    852d259.

  • Adjusted the publishing workflow automation to pre-configure Git
    before attempting to create a tag when building a source
    distribution -- by @webknjaz.

    Related commits on GitHub:
    f07296f.

  • The CI configuration for building the macOS platform-specific wheels
    switched to using cibuildwheel -- by @webknjaz.

    Related issues and pull requests on GitHub: #333.

  • The OS-level tox package was upgraded to v3.28.0 in the UBI9 CI
    runtime -- by @Qalthos.

    Related issues and pull requests on GitHub: #461, #473.

  • Fixed spelling of "Connect" in the Session.connect() docstring --
    by @donnerhacke.

    Related issues and pull requests on GitHub: #474.

  • The Packit CI access to the internet has been restored -- by
    @Qalthos.

    Related issues and pull requests on GitHub: #507.

  • Started building manylinux_2_28 base images for testing and
    packaging in the CI/CD infrastructure -- by @Qalthos.

    Related issues and pull requests on GitHub: #533.

  • Switched back to using Cython's native plugin for measuring code
    coverage -- by @webknjaz.

    Related issues and pull requests on GitHub: #538.

  • Added separate changelog fragment types for contributor-and
    downstream-facing patches -- by @webknjaz.

    Their corresponding identifiers are contrib and packaging
    respectively. They are meant to be used for more accurate
    classification, where one would resort to using misc otherwise.

    Related issues and pull requests on GitHub: #539.

  • 660 is now enabled -- @webknjaz.

    This effectively means that the ecosystem-native editable install
    mode started working properly.

    Related issues and pull requests on GitHub: #541.

  • The duplicated jobs matrices for building manylinux wheels now
    reside in a single GitHub Actions CI/CD reusable workflow
    definition.

    -- @webknjaz

    Related issues and pull requests on GitHub: #559.

  • The duplicated jobs matrices of the text jobs now reside in a single
    GitHub Actions CI/CD reusable workflow definition.

    -- @webknjaz

    Related issues and pull requests on GitHub: #560.

  • Fixed the location of release workflow in the Release Guide
    document -- by @Qalthos.

    Related issues and pull requests on GitHub: #565.

  • The setuptools-scm build dependency CI pin was updated to 8.1.0 —
    this version fixes a date parsing incompatibility introduced by Git
    2.45.0 (pypa/setuptools_scm#1039 <pypa/setuptools_scm/issues/1038>, pypa/setuptools_scm#1038 <pypa/setuptools_scm/pull/1039>) -- by @webknjaz.

    Related issues and pull requests on GitHub: #601.

  • The CI/CD configuration was fixed to allow publishing to PyPI and
    other targets disregarding the test stage outcome. This used to be a
    bug in the workflow definition that has now been fixed.

    -- by @pbrezina and @webknjaz

    Related issues and pull requests on GitHub: #602.


v1.2.0rc3

07 Jun 17:53

Choose a tag to compare

v1.2.0rc3 Pre-release
Pre-release

📝 Release notes

📦 PyPI page: https://pypi.org/project/ansible-pylibssh/1.2.0rc3

🚧 v1.2.0rc3 is marked as a pre-release.

🔗 This release has been produced by the following workflow run: https://github.com/ansible/pylibssh/actions/runs/9420767746

v1.2.0rc3 (2024-06-07)

Bug fixes

  • no longer crashes when received EOF or when channel is not
    explicitly closed -- by @pbrezina.

    Previously, crashed if channel.recv was called and libssh
    returned SSH_EOF error. It also crashed on some special occasions
    where channel was not explicitly closed and the session object was
    garbage-collected first.

    Related issues and pull requests on GitHub: #576.

Features

  • Started exposing the SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPES and
    SSH_OPTIONS_HOSTKEYS options publicly -- by @Qalthos.

    Related issues and pull requests on GitHub: #527.

  • The request_exec() method was added to the Channel class. It
    exposes an interface for calling the respective low-level C-API of
    the underlying libssh library -- by @pbrezina.

    Additionally, the following calls to libssh are now available in
    the same class: request_exec(), send_eof(),
    request_send_signal() and is_eof which is exposed as a
    :pyproperty.

    Related issues and pull requests on GitHub: #576.

Improved documentation

  • Fixed spelling of "Connect" in the Session.connect() docstring --
    by @donnerhacke.

    Related issues and pull requests on GitHub: #474.

  • Added a tip to the installation guide <Installing |project|> on
    how to set compiler flags when installing from source -- @webknjaz.

    Related issues and pull requests on GitHub: #499.

  • Fixed the example of invoking remote commands by using
    Channel.exec_command() in snippets -- by @pbrezina.

    Its previously showcased version wasn't functional.

    Related issues and pull requests on GitHub: #576.

Packaging updates and notes for downstreams

  • A flaw in the logic for copying the project directory into a
    temporary folder that led to infinite recursion when TMPDIR was
    set to a project subdirectory path. This was happening in Fedora and
    its downstream due to the use of
    pyproject-rpm-macros.
    It was only reproducible with pip wheel and was not affecting the
    pyproject-build users.

    -- by @hroncok and @webknjaz

    Related commits on GitHub:
    89c9b3a.

  • From now on, the published distribution package artifacts for the
    new releases are signed via Sigstore -- by
    @webknjaz.

    This is happening as a part of the GitHub Actions CI/CD workflow
    automation and the signatures are uploaded to the corresponding
    GitHub Release pages.

    Related commits on GitHub:
    986988a.

  • The platform-specific macOS wheels are now built using the Python
    interpreter from https://python.org. They are tagged with
    macosx_10_9 -- by @webknjaz.

    Related issues and pull requests on GitHub: #333.

  • The toml build time dependency has been replaced with tomli --
    by @webknjaz.

    The tomli distribution is only pulled in under Python versions
    below 3.11. On 3.11 and higher, the standard library module
    :pytomllib is now used instead.

    Related issues and pull requests on GitHub: #501.

  • Started using the built-in setuptools-scm Git archive support
    under Python 3.7 and higher -- @webknjaz.

    Related issues and pull requests on GitHub: #502.

  • Added support for Python 3.12 -- by @Qalthos.

    It is now both tested in the CI and is advertised through the Trove
    classifiers.

    Related issues and pull requests on GitHub: #532.

  • The Cython build time dependency now has the minimum version of
    3.0 under Python 3.12 and higher -- by @webknjaz.

    The previous versions of Cython are still able to build the
    project under older Python versions.

    Related issues and pull requests on GitHub: #540.

  • 660 is now enabled -- @webknjaz.

    Previously, due to restrictive 517 hook reimports, our in-tree
    build backend was losing non-PEP 517 <517> hooks implemented in
    newer versions of setuptools but not the earlier ones. This is now
    addressed by reexporting everything that setuptools exposes with a
    wildcard.

    Related issues and pull requests on GitHub: #541.

  • The setuptools-scm build dependency CI pin was updated to 8.1.0 —
    this version fixes a date parsing incompatibility introduced by Git
    2.45.0 (pypa/setuptools_scm#1039 <pypa/setuptools_scm/issues/1038>, pypa/setuptools_scm#1038 <pypa/setuptools_scm/pull/1039>) -- by @webknjaz.

    Related issues and pull requests on GitHub: #601.

Contributor-facing changes

  • The changelog page for the tagged release builds on Read The Docs
    does not attempt showing the draft section anymore -- by @webknjaz.

    Related commits on GitHub:
    852d259.

  • Adjusted the publishing workflow automation to pre-configure Git
    before attempting to create a tag when building a source
    distribution -- by @webknjaz.

    Related commits on GitHub:
    f07296f.

  • The CI configuration for building the macOS platform-specific wheels
    switched to using cibuildwheel -- by @webknjaz.

    Related issues and pull requests on GitHub: #333.

  • The OS-level tox package was upgraded to v3.28.0 in the UBI9 CI
    runtime -- by @Qalthos.

    Related issues and pull requests on GitHub: #461, #473.

  • Fixed spelling of "Connect" in the Session.connect() docstring --
    by @donnerhacke.

    Related issues and pull requests on GitHub: #474.

  • The Packit CI access to the internet has been restored -- by
    @Qalthos.

    Related issues and pull requests on GitHub: #507.

  • Started building manylinux_2_28 base images for testing and
    packaging in the CI/CD infrastructure -- by @Qalthos.

    Related issues and pull requests on GitHub: #533.

  • Switched back to using Cython's native plugin for measuring code
    coverage -- by @webknjaz.

    Related issues and pull requests on GitHub: #538.

  • Added separate changelog fragment types for contributor-and
    downstream-facing patches -- by @webknjaz.

    Their corresponding identifiers are contrib and packaging
    respectively. They are meant to be used for more accurate
    classification, where one would resort to using misc otherwise.

    Related issues and pull requests on GitHub: #539.

  • 660 is now enabled -- @webknjaz.

    This effectively means that the ecosystem-native editable install
    mode started working properly.

    Related issues and pull requests on GitHub: #541.

  • The duplicated jobs matrices for building manylinux wheels now
    reside in a single GitHub Actions CI/CD reusable workflow
    definition.

    -- @webknjaz

    Related issues and pull requests on GitHub: #559.

  • The duplicated jobs matrices of the text jobs now reside in a single
    GitHub Actions CI/CD reusable workflow definition.

    -- @webknjaz

    Related issues and pull requests on GitHub: #560.

  • Fixed the location of release workflow in the Release Guide
    document -- by @Qalthos.

    Related issues and pull requests on GitHub: #565.

  • The setuptools-scm build dependency CI pin was updated to 8.1.0 —
    this version fixes a date parsing incompatibility introduced by Git
    2.45.0 (pypa/setuptools_scm#1039 <pypa/setuptools_scm/issues/1038>, pypa/setuptools_scm#1038 <pypa/setuptools_scm/pull/1039>) -- by @webknjaz.

    Related issues and pull requests on GitHub: #601.

  • The CI/CD configuration was fixed to allow publishing to PyPI and
    other targets disregarding the test stage outcome. This used to be a
    bug in the workflow definition that has now been fixed.

    -- by @pbrezina and @webknjaz

    Related issues and pull requests on GitHub: #602.