Skip to content

v1.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 16 Mar 11:33
· 7 commits to devel since this release

📝 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.