ansible-pylibssh (1.4.0)
Installation
pip install --index-url ansible-pylibsshAbout this package
Python bindings for libssh client specific to Ansible use case
.. image:: https://img.shields.io/pypi/v/ansible-pylibssh.svg?logo=Python&logoColor=white :target: https://pypi.org/project/ansible-pylibssh
.. image:: https://img.shields.io/badge/license-LGPL+-blue.svg?maxAge=3600 :target: https://pypi.org/project/ansible-pylibssh
.. image:: https://img.shields.io/pypi/pyversions/ansible-pylibssh.svg?logo=Python&logoColor=white :target: https://pypi.org/project/ansible-pylibssh
.. image:: https://github.com/ansible/pylibssh/actions/workflows/ci-cd.yml/badge.svg?event=push :alt: 🧪 CI/CD @ devel :target: https://github.com/ansible/pylibssh/actions/workflows/ci-cd.yml
.. image:: https://img.shields.io/codecov/c/gh/ansible/pylibssh/devel?logo=codecov&logoColor=white :target: https://codecov.io/gh/ansible/pylibssh :alt: devel branch coverage via Codecov
.. image:: https://img.shields.io/badge/style-wemake-000000.svg :target: https://github.com/wemake-services/wemake-python-styleguide
.. image:: https://img.shields.io/badge/Code%20of%20Conduct-Ansible-silver.svg :target: https://docs.ansible.com/ansible/latest/community/code_of_conduct.html :alt: Ansible Code of Conduct
.. DO-NOT-REMOVE-docs-badges-END
pylibssh: Python bindings to client functionality of libssh specific to Ansible use case
.. DO-NOT-REMOVE-docs-intro-START
Nightlies @ Dumb PyPI @ GitHub Pages
.. DO-NOT-REMOVE-nightlies-START
We publish nightlies on tags and pushes to devel.
They are hosted on a GitHub Pages based index generated
by dumb-pypi <https://pypi.org/project/dumb-pypi/>_.
The web view is @ https://ansible.github.io/pylibssh/.
.. code-block:: shell-session
$ pip install \
--extra-index-url=https://ansible.github.io/pylibssh/simple/ \
--pre \
ansible-pylibssh
.. DO-NOT-REMOVE-nightlies-END
Requirements
You need Python 3.9+
pylibssh requires libssh to be installed in particular:
-
libssh version 0.9.0 and later.
To install libssh refer to its
Downloads page <https://www.libssh.org/get-it/>__.
Building the module
In the local env, assumes there's a libssh shared library on the system, build toolchain is present and env vars are set properly:
.. code-block:: shell-session
$ git clone https://github.com/ansible/pylibssh.git
$ cd pylibssh
$ pip install tox
$ tox -e build-dists
manylinux-compatible wheels:
.. code-block:: shell-session
$ git clone https://github.com/ansible/pylibssh.git
$ cd pylibssh
$ pip install tox
$ tox -e build-dists-manylinux1-x86_64 # with Docker
# or with Podman
$ DOCKER_EXECUTABLE=podman tox -e build-dists-manylinux1-x86_64
# to enable shell script debug mode use
$ tox -e build-dists-manylinux1-x86_64 -- -e DEBUG=1
Communication
Join the Ansible forum:
Get Help <https://forum.ansible.com/c/help/6>_: get help or help others. Please add the appropriate tags if you start new discussions, for example thepylibsshtag.Posts tagged with 'pylibssh' <https://forum.ansible.com/tag/pylibssh>_: subscribe to participate in project-related conversations.News & Announcements <https://forum.ansible.com/c/news/5>: track project-wide announcements including social events and theBullhorn newsletter <https://docs.ansible.com/ansible/devel/community/communication.html#the-bullhorn>.Social Spaces <https://forum.ansible.com/c/chat/4>_: gather and interact with fellow enthusiasts.
For more information about getting in touch with us, see the Ansible communication guide <https://docs.ansible.com/ansible/devel/community/communication.html>_.
License
This library is distributed under the terms of LGPL 2 or higher,
see file LICENSE.rst in this repository.
Changelog
.. You should NOT be adding new change log entries to this file, this file is managed by towncrier. You may edit previous change logs to fix problems like typo corrections or such. To add a new change log entry, please see https://pip.pypa.io/en/latest/development/contributing/#news-entries we named the news folder "docs/changelog-fragments/".
WARNING: Don't drop the next directive!
.. towncrier release notes start
v1.4.0
(2026-03-15)
Bug fixes
-
Fixed the log level mapping to cover the entire
libsshrange -- by@Jakuje <https://github.com/sponsors/Jakuje>__ and@webknjaz <https://github.com/sponsors/webknjaz>__.Previously it was not possible to set the most verbose
libsshlog levelSSH_LOG_TRACEto get the most verbose log messages useful for debugging connection issues.Related issues and pull requests on GitHub:
#597 <https://github.com/ansible/pylibssh/issues/597>__.
Features
-
Made
libsshuse the Python :external+pythonloggingsystem -- by@Jakuje <https://github.com/sponsors/Jakuje>__ and@webknjaz <https://github.com/sponsors/webknjaz>__.Previously the underlying
libsshlibrary was writing its logs directly from the C-level intostderr, which caused inconsistent behavior.The default log level is now set to
ANSIBLE_PYLIBSSH_TRACEand the downstream loggers are able to trim the verbosity down. If you need performance, it is possible to disable logging on thelibsshside at the source by setting a lower logging value, for example:.. code-block:: python
ssh_session.set_log_level(ANSIBLE_PYLIBSSH_NOLOG)
Additionally, the log level can be now be set also through the session initializer:
.. code-block:: python
ssh = Session(log_verbosity=ANSIBLE_PYLIBSSH_TRACE)
or the
connect()method arguments:.. code-block:: python
ssh.connect(log_verbosity=ANSIBLE_PYLIBSSH_TRACE)
Setting any levels imported from :external+python
!loggingis also supported.Related issues and pull requests on GitHub:
#597 <https://github.com/ansible/pylibssh/issues/597>__.
Packaging updates and notes for downstreams
-
Started shipping binary
armv7lwheels -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#648 <https://github.com/ansible/pylibssh/issues/648>__. -
Upgrading
cibuildwheelto v2.22.0 also picked up Python 3.13 and enabled respective wheels to be built -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#648 <https://github.com/ansible/pylibssh/issues/648>__. -
The CI/CD/packaging infrastructure has been updated to produce :external+packaging
source distributionfile names consistent with the requirement of uploading artifacts compliant with the core packaging metadata 2.2 or newer to PyPI and TestPyPI -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Along with that, the infrastructure has been adjusted to expect
PEP 625 <https://peps.python.org/pep-625>-conforming names in its guard rails checks -- with some@cidrblock <https://github.com/sponsors/cidrblock>\ s help.Related issues and pull requests on GitHub:
#808 <https://github.com/ansible/pylibssh/issues/808>,#809 <https://github.com/ansible/pylibssh/issues/809>. -
Upgrading
cibuildwheelto v3.1.0 also picked up Python 3.14 and enabled respective wheels to be built -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Building the free-threaded wheels remains disabled, though.
Related issues and pull requests on GitHub:
#809 <https://github.com/ansible/pylibssh/issues/809>,#823 <https://github.com/ansible/pylibssh/issues/823>. -
While upgrading
cibuildwheelto 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 <https://github.com/sponsors/webknjaz>__.We may enable it at a later time as a separate dedicated effort.
Related issues and pull requests on GitHub:
#809 <https://github.com/ansible/pylibssh/issues/809>,#824 <https://github.com/ansible/pylibssh/issues/824>. -
Due to
cibuildwheelto v3 bundlingdelocate0.13.0 that enforces deployment-target consistency with the brew-installed copy of thelibsshin the build jobs, the macOS wheels we build now require macOS version 15.0 or newer.-- by
@cidrblock <https://github.com/sponsors/cidrblock>__ and@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#809 <https://github.com/ansible/pylibssh/issues/809>,#824 <https://github.com/ansible/pylibssh/issues/824>. -
The core packaging metadata now reflects that we test the project under Python 3.13 and 3.14 (with GIL enabled) -- by
@cidrblock <https://github.com/sponsors/cidrblock>__ and@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#809 <https://github.com/ansible/pylibssh/issues/809>,#825 <https://github.com/ansible/pylibssh/issues/825>. -
The pre-cached
armv7limages we build for the packaging infrastructure are now correctly tagged with thelinux/arm/v7OCI platform tag -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#810 <https://github.com/ansible/pylibssh/issues/810>__. -
The build backend configuration no longer sets the deprecated
bdist_wheel.universalsetting -- by@webknjaz <https://github.com/sponsors/webknjaz>__.This does not influence the packaging artifacts in any way.
Related issues and pull requests on GitHub:
#811 <https://github.com/ansible/pylibssh/issues/811>__. -
The build backend has been configured to exclude
.git_archival.txtfrom source distributions built from Git -- by@webknjaz <https://github.com/sponsors/webknjaz>__.This reduces the number of false positive warning the backend outputs.
Related issues and pull requests on GitHub:
#811 <https://github.com/ansible/pylibssh/issues/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 <https://github.com/sponsors/webknjaz>__Related commits on GitHub:
234a2d34 <https://github.com/ansible/pylibssh/commit/234a2d34>,a63b6028 <https://github.com/ansible/pylibssh/commit/a63b6028>,0e385696 <https://github.com/ansible/pylibssh/commit/0e385696>__. -
The linting configuration now uses Ruff to run additional checks on pure Python modules -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
817095443f6afa4b3822780110712db148693075 <https://github.com/ansible/pylibssh/commit/817095443f6afa4b3822780110712db148693075>__. -
cibuildwheelstarted making use of thearmv7lcontainer image following its upgrade to v2.22.0 -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#648 <https://github.com/ansible/pylibssh/issues/648>__. -
Increased the amount of retries in test to avoid possible timeouts on slower systems -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#777 <https://github.com/ansible/pylibssh/issues/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 <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#782 <https://github.com/ansible/pylibssh/issues/782>__. -
Now that the
macos-13runner VM image has been decommissioned, the CI and CD jobs have been migrated to usemacos-15-intel-- by@komaldesai13 <https://github.com/sponsors/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 <https://github.com/ansible/pylibssh/issues/791>__. -
Updated the version of
libsshto the latest release v0.12.0 in the cachedmanylinuxbuild environment container images -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#797 <https://github.com/ansible/pylibssh/issues/797>__. -
Updated the bundled version of libssh to 0.12.0 in platform-specific wheels published on PyPI -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#798 <https://github.com/ansible/pylibssh/issues/798>__. -
Added Fedora and ubi9 images to CI/CD pipeline that are relevant in 2026 and removed EOL Fedora versions -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#801 <https://github.com/ansible/pylibssh/issues/801>__. -
The
pre-commitframework configuration has been updated to be in sync withawx-pluginsand other projects. It now has a few additional linters and a workaround for the outdated ones.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#803 <https://github.com/ansible/pylibssh/issues/803>__. -
The standalone mentions of
pylibsshhave been replaced withansible-pylibsshin file license headers -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#804 <https://github.com/ansible/pylibssh/issues/804>__. -
The CI/CD/packaging infrastructure has been updated to produce :external+packaging
source distributionfile names consistent with the requirement of uploading artifacts compliant with the core packaging metadata 2.2 or newer to PyPI and TestPyPI -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Along with that, the infrastructure has been adjusted to expect
PEP 625 <https://peps.python.org/pep-625>-conforming names in its guard rails checks -- with some@cidrblock <https://github.com/sponsors/cidrblock>\ s help.Related issues and pull requests on GitHub:
#808 <https://github.com/ansible/pylibssh/issues/808>,#809 <https://github.com/ansible/pylibssh/issues/809>. -
cibuildwheelhas been upgraded to v3.1.4 -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#809 <https://github.com/ansible/pylibssh/issues/809>,#820 <https://github.com/ansible/pylibssh/issues/820>,#821 <https://github.com/ansible/pylibssh/issues/821>,#823 <https://github.com/ansible/pylibssh/issues/823>,#824 <https://github.com/ansible/pylibssh/issues/824>__. -
The coverage measurement infrastructure now uses the
ctrace:external+coveragepymeasurement coreacross all the Python versions consistently -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#809 <https://github.com/ansible/pylibssh/issues/809>,#825 <https://github.com/ansible/pylibssh/issues/825>. -
The CI now tests wheels built for Python 3.13 and 3.14 -- by
@cidrblock <https://github.com/sponsors/cidrblock>__ and@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#809 <https://github.com/ansible/pylibssh/issues/809>,#825 <https://github.com/ansible/pylibssh/issues/825>. -
The pre-cached
armv7limages we build for the packaging infrastructure are now correctly tagged with thelinux/arm/v7OCI platform tag -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#810 <https://github.com/ansible/pylibssh/issues/810>__. -
The build backend configuration no longer sets the deprecated
bdist_wheel.universalsetting -- by@webknjaz <https://github.com/sponsors/webknjaz>__.This does not influence the packaging artifacts in any way.
Related issues and pull requests on GitHub:
#811 <https://github.com/ansible/pylibssh/issues/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 <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#816 <https://github.com/ansible/pylibssh/issues/816>__. -
The CI/CD and packaging infrastructure now sources the PyPI project name from
setup.cfgrather than hardcoding it -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#817 <https://github.com/ansible/pylibssh/issues/817>__. -
The documentation building infrastructure now integrates GitHub-related RST roles using the
sphinx-issuesextension -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#818 <https://github.com/ansible/pylibssh/issues/818>__.
v1.3.0
(2025-10-12)
Bug fixes
-
The bundled libssh 0.11.2 no longer fails, when the SFTP server announces protocol version 3, but does not provide error message and language tag in the
SSH_FXP_STATUSmessage -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#222 <https://github.com/ansible/pylibssh/issues/222>__. -
Fixed reading files over SFTP that go over the pre-defined chunk size.
Prior to this change, the files could end up being corrupted, ending up with the last read chunk written to the file instead of the entire payload.
-- by
@Jakuje <https://github.com/sponsors/Jakuje>__Related issues and pull requests on GitHub:
#638 <https://github.com/ansible/pylibssh/issues/638>__. -
Repetitive calls to
exec_channel()no longer crash and return reliable output -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#658 <https://github.com/ansible/pylibssh/issues/658>__. -
Uploading large files over SCP no longer fails -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#661 <https://github.com/ansible/pylibssh/issues/661>__. -
Improved performance of SFTP transfers by using larger transfer chunks -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#664 <https://github.com/ansible/pylibssh/issues/664>__. -
Fixed crash when more operations were called after
session.close()-- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#709 <https://github.com/ansible/pylibssh/issues/709>__.
Features
-
The underlying
SSH_OPTIONS_KEY_EXCHANGEoption oflibsshis now available askey_exchange_algorithms-- by@NilashishC <https://github.com/sponsors/NilashishC>__.Related issues and pull requests on GitHub:
#675 <https://github.com/ansible/pylibssh/issues/675>__. -
Added a
pylibsshext.session.connect()parameteropen_session_retries-- by@justin-stephenson <https://github.com/sponsors/justin-stephenson>__.The
open_session_retriessessionconnect()parameter allows a configurable number of retries if libsshssh_channel_open_session()returnsSSH_AGAIN. The default option value is 0, no retries will be attempted.Related issues and pull requests on GitHub:
#756 <https://github.com/ansible/pylibssh/issues/756>__. -
Added a
pylibsshext.session.connect()parametertimeout_usecto setSSH_OPTIONS_TIMEOUT_USEC.This allows setting the
SSH_OPTIONS_TIMEOUT_USECssh option, thoughSSH_OPTIONS_TIMEOUTis a more practical option.-- by
@justin-stephenson <https://github.com/sponsors/justin-stephenson>__Related issues and pull requests on GitHub:
#756 <https://github.com/ansible/pylibssh/issues/756>__.
Deprecations (removal in next major release)
-
The project stopped being tested under Ubuntu 20.04 VM since GitHub has sunset their CI images -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#708 <https://github.com/ansible/pylibssh/issues/708>__.
Removals and backward incompatible breaking changes
-
Dropped support for Python 3.6, 3.7 and 3.8 -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ and@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#532 <https://github.com/ansible/pylibssh/issues/532>,#718 <https://github.com/ansible/pylibssh/issues/718>. -
PyPI no longer ships year-versioned manylinux wheels. One may have to update their version of pip to pick up the new ones.
-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#562 <https://github.com/ansible/pylibssh/issues/562>__.
Improved documentation
-
Added a
Communicationsection to the main documentation page -- by@Andersson007 <https://github.com/sponsors/Andersson007>__.Related issues and pull requests on GitHub:
#640 <https://github.com/ansible/pylibssh/issues/640>__. -
Fixed the argument order in the
scp.put()usage example -- by@kucharskim <https://github.com/sponsors/kucharskim>__.Related issues and pull requests on GitHub:
#646 <https://github.com/ansible/pylibssh/issues/646>__.
Packaging updates and notes for downstreams
-
PyPI now only ships
PEP 600 <https://peps.python.org/pep-600>-compatible manylinux wheels -- by@webknjaz <https://github.com/sponsors/webknjaz>.Related issues and pull requests on GitHub:
#562 <https://github.com/ansible/pylibssh/issues/562>__. -
The
pytest-forkeddependency of build, development and test environments was removed -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#658 <https://github.com/ansible/pylibssh/issues/658>,#760 <https://github.com/ansible/pylibssh/issues/760>. -
The wheels are now built in cached container images with a correctly set platform identifier.
-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#692 <https://github.com/ansible/pylibssh/issues/692>__. -
The
manylinuxbuild scripts now limitcmakebelow version 4 -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#713 <https://github.com/ansible/pylibssh/issues/713>__. -
Stopped skipping SCP tests in the RPM spec -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#714 <https://github.com/ansible/pylibssh/issues/714>__. -
Started bundling a copy of libssh 0.11.1 in platform-specific wheels published on PyPI -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#735 <https://github.com/ansible/pylibssh/issues/735>__. -
Updated the bundled copy of OpenSSL to the latest version 3.5.0 in
manylinuxwheels -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#738 <https://github.com/ansible/pylibssh/issues/738>__. -
Updated the bundled version of libssh to 0.11.2 in platform-specific wheels published on PyPI -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#753 <https://github.com/ansible/pylibssh/issues/753>__. -
The RPM spec file no longer makes use of unpackaged dists from PyPI on RHEL. The configuration is almost identical to the one for Fedora. Only the
setuptools-scmspec is temporarily patched to allow older versions under RHEL.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#759 <https://github.com/ansible/pylibssh/issues/759>__. -
A workaround has been applied to the in-tree build backend that prevents Cython from hanging when
libsshheader files are missing -- by@webknjaz <https://github.com/sponsors/webknjaz>__.The patch makes
cythonize()single-threaded becausemultiprocessinggets stuck. The upstream will eventually fix this by migrating toconcurrent.futures.Related issues and pull requests on GitHub:
#762 <https://github.com/ansible/pylibssh/issues/762>,#769 <https://github.com/ansible/pylibssh/issues/769>,#770 <https://github.com/ansible/pylibssh/issues/770>__. -
Updated the bundled version of libssh to 0.11.3 in platform-specific wheels published on PyPI -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#766 <https://github.com/ansible/pylibssh/issues/766>__.
Contributor-facing changes
-
The manylinux build scripts have been adjusted to resolve the dependency conflict between certain
packagingandsetuptoolsversions -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Previously, this was making some of the CI jobs crash with a traceback when building said wheels.
Related commits on GitHub:
1dfbf70fdfd99ae75068fdb3630790c96101a96a <https://github.com/ansible/pylibssh/commit/1dfbf70fdfd99ae75068fdb3630790c96101a96a>__. -
The Git archives are now immutable per the packaging recommendations. This allows downstreams safely use GitHub archive URLs when re-packaging -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
ea34887831a0c6547b32cd8c6a035bb77b91e771 <https://github.com/ansible/pylibssh/commit/ea34887831a0c6547b32cd8c6a035bb77b91e771>__. -
Manylinux wheels are no longer built using custom shell scripts. Instead, this is delegated to the
cibuildwheeltool.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#562 <https://github.com/ansible/pylibssh/issues/562>__. -
Updated the version of
libsshto the latest release v0.11.1 in the cachedmanylinuxbuild environment container images -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#636 <https://github.com/ansible/pylibssh/issues/636>__. -
All the uses of
actions/upload-artifact@v3andactions/download-artifact@v3have been updated to usev4. This also includes bumpingre-actors/checkout-python-sdisttorelease/v2as it usesactions/download-artifactinternally.-- by
@NilashishC <https://github.com/sponsors/NilashishC>__ and@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#676 <https://github.com/ansible/pylibssh/issues/676>__. -
The
dumb-pypi-produced static package index now renders correct URLs to the distribution packages -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#678 <https://github.com/ansible/pylibssh/issues/678>,#679 <https://github.com/ansible/pylibssh/issues/679>,#749 <https://github.com/ansible/pylibssh/issues/749>__. -
The CI is now configured to use :external+tox
tox-run---installpkgwhen testing pre-built dists. This replaces the previously existing tox-level hacks intest-binary-distsandtest-source-distsenvironments that have now been removed.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#688 <https://github.com/ansible/pylibssh/issues/688>__. -
The wheel building workflows have been updated to set the OCI image platform identifiers to legal values like
linux/arm64.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#692 <https://github.com/ansible/pylibssh/issues/692>__. -
The CI is now configured to always set job timeout values. This will ensure that the jobs that get stuck don't consume all 6 hours just hanging, improving responsiveness and the overall CI/CD resource usage.
-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#706 <https://github.com/ansible/pylibssh/issues/706>__. -
The linting is now configured to check schemas of the Read The Docs configuration file and the GitHub Actions CI/CD workflow files in addition to enforcing timeouts.
-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#707 <https://github.com/ansible/pylibssh/issues/707>__. -
The
multiarch/qemu-user-staticimage got replaced withtonistiigi/binfmtbecause the latter is no longer maintained and the former includes the fixed version of QEMU.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#713 <https://github.com/ansible/pylibssh/issues/713>__. -
Added Fedora 41 and 42 to CI configuration -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#715 <https://github.com/ansible/pylibssh/issues/715>__. -
Removed needless step from CI adjusting centos8 repositories -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#716 <https://github.com/ansible/pylibssh/issues/716>__. -
The CI/CD infrastructure no longer pre-builds custom manylinux images for building wheel targeting
manylinux1,manylinux2010andmanylinux2014tags.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#730 <https://github.com/ansible/pylibssh/issues/730>__. -
The host OS is now ARM-based when building
manylinux_*_*_aarch64images for CI/CD -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#731 <https://github.com/ansible/pylibssh/issues/731>__. -
False negative warnings reported by
coveragepywhen are now disabled. They are evident whenpytest-covruns with thepytest-xdistintegration.pytest8.4 gives them more visibility and outfilterwarnings = errorsetting was turning them into errors before this change.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#732 <https://github.com/ansible/pylibssh/issues/732>__. -
GitHub Actions CI/CD no longer runs jobs that install source distributions into the tox environments for testing -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.This is a temporary workaround for an upstream bug in tox and said jobs are non-essential.
Related issues and pull requests on GitHub:
#733 <https://github.com/ansible/pylibssh/issues/733>__. -
Updated the pre-built
libffiversion to 3.4.8 in the cachedmanylinuxbuild environment container images -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#734 <https://github.com/ansible/pylibssh/issues/734>__. -
Reverted workaround keeping the old CMake version installed as the new
libsshworks with newer versions -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#737 <https://github.com/ansible/pylibssh/issues/737>__. -
The CI infrastructure now produces
manylinux_2_31_armv7lbase images withlibsshandopensslpre-built -- by@Jakuje <https://github.com/sponsors/Jakuje>__ and@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#740 <https://github.com/ansible/pylibssh/issues/740>__. -
Started caching
manylinuxbuild images to be used for producing2_34tagged wheels inbuild-manylinux-container-imagesworkflow -- by@KB-perByte <https://github.com/sponsors/KB-perByte>__.Related issues and pull requests on GitHub:
#741 <https://github.com/ansible/pylibssh/issues/741>__. -
The
reusable-cibuildwheel.ymlworkflow has been refactored to be more generic andci-cd.ymlnow holds all the configuration toggles -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#750 <https://github.com/ansible/pylibssh/issues/750>__. -
Updated the version of
libsshto the latest release v0.11.2 in the cachedmanylinuxbuild environment container images -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#752 <https://github.com/ansible/pylibssh/issues/752>__. -
When building wheels, the source distribution is now passed directly to the
cibuildwheelinvocation -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#754 <https://github.com/ansible/pylibssh/issues/754>__. -
Fixed link to python3-pytest for CentOS 9 Stream as it was recently moved from CRB to AppStream -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#758 <https://github.com/ansible/pylibssh/issues/758>__. -
The CI/CD jobs for smoke-testing RPMs have been simplified and now, they execute the same steps for all distro types. They make use of
pyproject-rpm-macroseven under RHEL. Installing external RPMs is the only conditional step that is skipped on Fedora.-- by
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#759 <https://github.com/ansible/pylibssh/issues/759>__. -
The
requiressetting has been removed fromtox.ini, which works around the upstream tool bug. This enabled us to re-introduce CI jobs testing against sdist under Python 3.12 and newer -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#764 <https://github.com/ansible/pylibssh/issues/764>__. -
Updated the version of
libsshto the latest release v0.11.3 in the cachedmanylinuxbuild environment container images -- by@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#765 <https://github.com/ansible/pylibssh/issues/765>__. -
Changed tests to use more lightweight ECDSA keys to avoid timeouts -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#768 <https://github.com/ansible/pylibssh/issues/768>__.
v1.2.2
(2024-06-27)
Bug fixes
-
Downloading files larger than 64kB over SCP no longer fails -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#621 <https://github.com/ansible/pylibssh/issues/621>__.
v1.2.1
(2024-06-27)
Bug fixes
-
Downloading non-existent remote files via SCP no longer crashes the program -- by
@Jakuje <https://github.com/sponsors/Jakuje>__.Related issues and pull requests on GitHub:
#208 <https://github.com/ansible/pylibssh/issues/208>,#325 <https://github.com/ansible/pylibssh/issues/325>,#620 <https://github.com/ansible/pylibssh/issues/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 <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
9053c1008bb169c8e362a92782d46c7c0d3b1c06 <https://github.com/ansible/pylibssh/commit/9053c1008bb169c8e362a92782d46c7c0d3b1c06>,aaa12159b5cdda763a83dcf4ee920510cad83463 <https://github.com/ansible/pylibssh/commit/aaa12159b5cdda763a83dcf4ee920510cad83463>. -
The RPM specification has been updated to pre-build the vendored copy of
setuptools-scmwith the isolation disabled, addressing the build problem in EL 9 -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
dd85ddefafde8f22ab0239add18a1db9ef789b50 <https://github.com/ansible/pylibssh/commit/dd85ddefafde8f22ab0239add18a1db9ef789b50>__. -
The RPM definition now runs import self-checks when it is built for Fedora Linux -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#615 <https://github.com/ansible/pylibssh/issues/615>__.
Contributor-facing changes
-
RPM builds are now also tested against UBI 9.4 in CI -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
e9ad0a7d456c99cc848b30b48569235366273672 <https://github.com/ansible/pylibssh/commit/e9ad0a7d456c99cc848b30b48569235366273672>__.
v1.2.0.post4
(2024-06-09)
Packaging updates and notes for downstreams
-
Substituting the
ghrole in source distribution long description has been simplify to stop attempting to make URLs to arbitrary GitHub addresses -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
f4ad1b76 <https://github.com/ansible/pylibssh/commit/f4ad1b76>__. -
The in-tree
PEP 517 <https://peps.python.org/pep-517>__ build backend's regular expression has been hotfixed to replace the "project" substitution correctly -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Previously, it was generating a lot of noise instead of a nice description. But not anymore.
Related issues and pull requests on GitHub:
#92752210 <https://github.com/ansible/pylibssh/issues/92752210>__.
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 <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
13374a71 <https://github.com/ansible/pylibssh/commit/13374a71>__. -
The CI/CD automation has been fixed to include changelog updates into source distribution tarballs -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
627f718d <https://github.com/ansible/pylibssh/commit/627f718d>__.
v1.2.0
(2024-06-07)
Bug fixes
-
ansible-pylibssh no longer crashes when received EOF or when channel is not explicitly closed -- by
@pbrezina <https://github.com/sponsors/pbrezina>__.Previously, ansible-pylibssh crashed if
channel.recvwas called andlibsshreturnedSSH_EOFerror. 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 <https://github.com/ansible/pylibssh/issues/576>__.
Features
-
Started exposing the
SSH_OPTIONS_PUBLICKEY_ACCEPTED_TYPESandSSH_OPTIONS_HOSTKEYSoptions publicly -- by@Qalthos <https://github.com/sponsors/Qalthos>__.Related issues and pull requests on GitHub:
#527 <https://github.com/ansible/pylibssh/issues/527>__. -
The
request_exec()method was added to theChannelclass. It exposes an interface for calling the respective low-level C-API of the underlyinglibsshlibrary -- by@pbrezina <https://github.com/sponsors/pbrezina>__.Additionally, the following calls to
libsshare now available in the same class:request_exec(),send_eof(),request_send_signal()andis_eofwhich is exposed as aproperty.Related issues and pull requests on GitHub:
#576 <https://github.com/ansible/pylibssh/issues/576>__.
Improved documentation
-
Fixed spelling of "Connect" in the
Session.connect()docstring -- by@donnerhacke <https://github.com/sponsors/donnerhacke>__.Related issues and pull requests on GitHub:
#474 <https://github.com/ansible/pylibssh/issues/474>__. -
Added a tip to the
installation guideon how to set compiler flags when installing from source --@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#499 <https://github.com/ansible/pylibssh/issues/499>__. -
Fixed the example of invoking remote commands by using
Channel.exec_command()in snippets -- by@pbrezina <https://github.com/sponsors/pbrezina>__.Its previously showcased version wasn't functional.
Related issues and pull requests on GitHub:
#576 <https://github.com/ansible/pylibssh/issues/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
TMPDIRwas set to a project subdirectory path. This was happening in Fedora and its downstream due to the use ofpyproject-rpm-macros <https://src.fedoraproject.org/rpms/pyproject-rpm-macros>__. It was only reproducible withpip wheeland was not affecting thepyproject-buildusers.-- by
@hroncok <https://github.com/sponsors/hroncok>__ and@webknjaz <https://github.com/sponsors/webknjaz>__Related commits on GitHub:
89c9b3a <https://github.com/ansible/pylibssh/commit/89c9b3a>__. -
From now on, the published distribution package artifacts for the new releases are signed via
Sigstore <https://sigstore.dev>__ -- by@webknjaz <https://github.com/sponsors/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 <https://github.com/ansible/pylibssh/commit/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 <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#333 <https://github.com/ansible/pylibssh/issues/333>__. -
The
tomlbuild time dependency has been replaced withtomli-- by@webknjaz <https://github.com/sponsors/webknjaz>__.The
tomlidistribution is only pulled in under Python versions below 3.11. On 3.11 and higher, the standard library moduletomllibis now used instead.Related issues and pull requests on GitHub:
#501 <https://github.com/ansible/pylibssh/issues/501>__. -
Started using the built-in
setuptools-scmGit archive support under Python 3.7 and higher --@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#502 <https://github.com/ansible/pylibssh/issues/502>__. -
Added support for Python 3.12 -- by
@Qalthos <https://github.com/sponsors/Qalthos>__.It is now both tested in the CI and is advertised through the Trove classifiers.
Related issues and pull requests on GitHub:
#532 <https://github.com/ansible/pylibssh/issues/532>__. -
The
Cythonbuild time dependency now has the minimum version of 3.0 under Python 3.12 and higher -- by@webknjaz <https://github.com/sponsors/webknjaz>__.The previous versions of
Cythonare still able to build the project under older Python versions.Related issues and pull requests on GitHub:
#540 <https://github.com/ansible/pylibssh/issues/540>__. -
PEP 660 <https://peps.python.org/pep-660>__ is now enabled --@webknjaz <https://github.com/sponsors/webknjaz>__.Previously, due to restrictive
PEP 517 <https://peps.python.org/pep-517>__ hook reimports, our in-tree build backend was losingnon-PEP 517hooks implemented in newer versions ofsetuptoolsbut not the earlier ones. This is now addressed by reexporting everything thatsetuptoolsexposes with a wildcard.Related issues and pull requests on GitHub:
#541 <https://github.com/ansible/pylibssh/issues/541>__. -
The
setuptools-scmbuild 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#1038 <https://github.com/ansible/pylibssh/issues/pypa/setuptools_scm#1038>,PR #pypa/setuptools_scm#1039 <https://github.com/ansible/pylibssh/pull/pypa/setuptools_scm#1039>) -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#601 <https://github.com/ansible/pylibssh/issues/601>__.
Contributor-facing changes
-
The
changelogpage for the tagged release builds on Read The Docs does not attempt showing the draft section anymore -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
852d259 <https://github.com/ansible/pylibssh/commit/852d259>__. -
Adjusted the publishing workflow automation to pre-configure Git before attempting to create a tag when building a source distribution -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related commits on GitHub:
f07296f <https://github.com/ansible/pylibssh/commit/f07296f>__. -
The CI configuration for building the macOS platform-specific wheels switched to using
cibuildwheel-- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#333 <https://github.com/ansible/pylibssh/issues/333>__. -
The OS-level tox package was upgraded to v3.28.0 in the UBI9 CI runtime -- by
@Qalthos <https://github.com/sponsors/Qalthos>__.Related issues and pull requests on GitHub:
#461 <https://github.com/ansible/pylibssh/issues/461>,#473 <https://github.com/ansible/pylibssh/issues/473>. -
Fixed spelling of "Connect" in the
Session.connect()docstring -- by@donnerhacke <https://github.com/sponsors/donnerhacke>__.Related issues and pull requests on GitHub:
#474 <https://github.com/ansible/pylibssh/issues/474>__. -
The Packit CI access to the internet has been restored -- by
@Qalthos <https://github.com/sponsors/Qalthos>__.Related issues and pull requests on GitHub:
#507 <https://github.com/ansible/pylibssh/issues/507>__. -
Started building
manylinux_2_28base images for testing and packaging in the CI/CD infrastructure -- by@Qalthos <https://github.com/sponsors/Qalthos>__.Related issues and pull requests on GitHub:
#533 <https://github.com/ansible/pylibssh/issues/533>__. -
Switched back to using Cython's native plugin for measuring code coverage -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#538 <https://github.com/ansible/pylibssh/issues/538>__. -
Added separate changelog fragment types for contributor- and downstream-facing patches -- by
@webknjaz <https://github.com/sponsors/webknjaz>__.Their corresponding identifiers are
contribandpackagingrespectively. They are meant to be used for more accurate classification, where one would resort to usingmiscotherwise.Related issues and pull requests on GitHub:
#539 <https://github.com/ansible/pylibssh/issues/539>__. -
PEP 660 <https://peps.python.org/pep-660>__ is now enabled --@webknjaz <https://github.com/sponsors/webknjaz>__.This effectively means that the ecosystem-native editable install mode started working properly.
Related issues and pull requests on GitHub:
#541 <https://github.com/ansible/pylibssh/issues/541>__. -
The duplicated jobs matrices for building manylinux wheels now reside in a single GitHub Actions CI/CD reusable workflow definition.
--
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#559 <https://github.com/ansible/pylibssh/issues/559>__. -
The duplicated jobs matrices of the text jobs now reside in a single GitHub Actions CI/CD reusable workflow definition.
--
@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#560 <https://github.com/ansible/pylibssh/issues/560>__. -
Fixed the location of release workflow in the
Release Guidedocument -- by@Qalthos <https://github.com/sponsors/Qalthos>__.Related issues and pull requests on GitHub:
#565 <https://github.com/ansible/pylibssh/issues/565>__. -
The
setuptools-scmbuild 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#1038 <https://github.com/ansible/pylibssh/issues/pypa/setuptools_scm#1038>,PR #pypa/setuptools_scm#1039 <https://github.com/ansible/pylibssh/pull/pypa/setuptools_scm#1039>) -- by@webknjaz <https://github.com/sponsors/webknjaz>__.Related issues and pull requests on GitHub:
#601 <https://github.com/ansible/pylibssh/issues/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 <https://github.com/sponsors/pbrezina>__ and@webknjaz <https://github.com/sponsors/webknjaz>__Related issues and pull requests on GitHub:
#602 <https://github.com/ansible/pylibssh/issues/602>__.
v1.1.0 (2022-12-05)
Features
- Started building
manylinuxwheels withlibsshv0.9.6 -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#441 <https://github.com/ansible/pylibssh/issues/441>__)
Deprecations (removal in next major release)
- The project stopped being tested under Ubuntu 18.04 VM since
GitHub is sunsetting their CI images -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ (#381 <https://github.com/ansible/pylibssh/issues/381>__)
Documentation
- Added a
Release Guidefor making new releases -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#413 <https://github.com/ansible/pylibssh/issues/413>__)
Miscellaneous
-
Started testing RPM packaging spec with Packit service -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ and@TomasTomecek <https://github.com/sponsors/TomasTomecek>__ (#227 <https://github.com/ansible/pylibssh/issues/227>,#246 <https://github.com/ansible/pylibssh/issues/246>) -
Removed the remains of Python 2 compatibility code from the in-tree
PEP 517 <https://peps.python.org/pep-517>__ build backend -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#377 <https://github.com/ansible/pylibssh/issues/377>__) -
Fixed removing
expandvarsfrompyproject.tomlin an RPM spec -- by@webknjaz <https://github.com/sponsors/webknjaz>__Before this patch, the
sedinvocation removed entirebuild-system.requiresentry from there, in rare cases but this won't be happening anymore. (#378 <https://github.com/ansible/pylibssh/issues/378>__) -
Declared official support of CPython 3.11 -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#396 <https://github.com/ansible/pylibssh/issues/396>__) -
Started shipping sdists built with Cython v0.29.32 -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ (#399 <https://github.com/ansible/pylibssh/issues/399>__) -
Started building RPMs with Cython v0.29.32 -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ (#402 <https://github.com/ansible/pylibssh/issues/402>__) -
Added an SSH connection re-try helper to tests -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ (#405 <https://github.com/ansible/pylibssh/issues/405>__)
v1.0.0 (2022-09-14)
Features
- Added
password_promptargument toconnect()to override the default prompt of "password:" when using keyboard-interactive authentication -- by@Qalthos <https://github.com/sponsors/Qalthos>__ (#331 <https://github.com/ansible/pylibssh/issues/331>__) - Added support for
:fd:socket option -- by@sabedevops <https://github.com/sponsors/sabedevops>__ (#343 <https://github.com/ansible/pylibssh/issues/343>__)
Miscellaneous
- Reworked build scripts to fix manylinux container generation -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#321 <https://github.com/ansible/pylibssh/issues/321>__) - Re-enable CI building on s390x -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#322 <https://github.com/ansible/pylibssh/issues/322>__)
v0.4.0 (2022-04-26)
Bugfixes
- Improved
channel.exec_commandto always use a newly createdssh_channelto avoid segfaults on repeated calls -- by@Qalthos <https://github.com/sponsors/Qalthos>__ (#280 <https://github.com/ansible/pylibssh/issues/280>__) - Fixed password prompt match in
pylibsshext.session.Session.authenticate_interactive()to strip whitespace, check that the prompt only ends withpassword:, and added a little extra logging -- by@dalrrard <https://github.com/sponsors/dalrrard>__ (#311 <https://github.com/ansible/pylibssh/issues/311>__)
Backward incompatible changes
- Dropped support for Python 2.7 and 3.5, and marked support for 3.10 -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#314 <https://github.com/ansible/pylibssh/issues/314>__)
v0.3.0 (2021-11-03)
Bugfixes
- Changed
sftp.sftp_getto write files as bytes rather than assuming files are valid UTF8 -- by@Qalthos <https://github.com/sponsors/Qalthos>__ (#216 <https://github.com/ansible/pylibssh/issues/216>__)
Features
- Started building platform-specific
manylinux2010,manylinux2014andmanylinux_2_24wheels for AARCH64, ppc64le and s390x architectures as introduced byPEP 599 <https://peps.python.org/pep-599>__ andPEP 600 <https://peps.python.org/pep-600>__ --@webknjaz <https://github.com/sponsors/webknjaz>__ (#187 <https://github.com/ansible/pylibssh/issues/187>__) - Added gssapi-with-mic support for authentication -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#195 <https://github.com/ansible/pylibssh/issues/195>__)
Documentation
- Correct a link to the pip upgrade doc in our installation guide
--
@webknjaz <https://github.com/sponsors/webknjaz>__ (#225 <https://github.com/ansible/pylibssh/issues/225>__)
Miscellaneous
- Started building AARCH64 base images with Buildah+Podman in GitHub
Actions CI/CD --
@webknjaz <https://github.com/sponsors/webknjaz>__ (#181 <https://github.com/ansible/pylibssh/issues/181>__) - Switched using
pep517 <https://pep517.rtfd.io>__ lib tobuild <https://pypa-build.rtfd.io>__ CLI --@webknjaz <https://github.com/sponsors/webknjaz>__ (#199 <https://github.com/ansible/pylibssh/issues/199>__) - Restructured the in-tree
PEP 517 <https://peps.python.org/pep-517>__ build backend into multiple submodules moving the entry-point topep517_backend.hooksthat also facilitates extraction of user-definedconfig_settingspassed by the end-user (packager) via thebuildCLI command --@webknjaz <https://github.com/sponsors/webknjaz>__ (#200 <https://github.com/ansible/pylibssh/issues/200>__) - Updated manylinux build script to build libssh with GSSAPI
enabled --
@Qalthos <https://github.com/sponsors/Qalthos>__ (#203 <https://github.com/ansible/pylibssh/issues/203>__) - Added an initial RPM spec continuously tested in the CI --
@webknjaz <https://github.com/sponsors/webknjaz>__ (#205 <https://github.com/ansible/pylibssh/issues/205>__) - Added additional details when SFTP write errors are raised -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#216 <https://github.com/ansible/pylibssh/issues/216>__) - Made
auditwheelonly keep one platform tag in the produced wheel names --@webknjaz <https://github.com/sponsors/webknjaz>__ (#224 <https://github.com/ansible/pylibssh/issues/224>__) - Improved manylinux build scripts to expect dual-aliased manylinux tags
produced for versions 1/2010/2014 along with their
PEP 600 <https://peps.python.org/pep-600>__ counterparts afterauditwheel repair--@webknjaz <https://github.com/sponsors/webknjaz>__ (#226 <https://github.com/ansible/pylibssh/issues/226>__) - Enabled self-test checks in the RPM spec for Fedora
--
@webknjaz <https://github.com/sponsors/webknjaz>__ (#228 <https://github.com/ansible/pylibssh/issues/228>__) - Enabled self-test checks in the RPM spec for CentOS
--
@webknjaz <https://github.com/sponsors/webknjaz>__ (#235 <https://github.com/ansible/pylibssh/issues/235>__) - Enabled self-test checks in the RPM spec for RHEL
--
@webknjaz <https://github.com/sponsors/webknjaz>__ (#236 <https://github.com/ansible/pylibssh/issues/236>__) - Added
NAME = "VALUE"to flake8-eradicate whitelist to work around test false positive introduced in flake8-eradicate 1.1.0 -- by@Qalthos <https://github.com/sponsors/Qalthos>__ (#258 <https://github.com/ansible/pylibssh/issues/258>__) - Stopped testing
pylibsshbinary wheels under Ubuntu 16.04 in GitHub Actions CI/CD because it is EOL now --@webknjaz <https://github.com/sponsors/webknjaz>__ (#260 <https://github.com/ansible/pylibssh/issues/260>__) - Fixed failing fast on problems with
rpmbuildin GitHub Actions CI/CD under Fedora --@webknjaz <https://github.com/sponsors/webknjaz>__ (#261 <https://github.com/ansible/pylibssh/issues/261>__) - Declare
python3-pipa build dependency under Fedora fixing the RPM creation job in GitHub Actions CI/CD under Fedora --@webknjaz <https://github.com/sponsors/webknjaz>__ (#262 <https://github.com/ansible/pylibssh/issues/262>__) - Replaced git protocols in pre-commit config with https now that GitHub has turned
off git protocol access --
@Qalthos <https://github.com/sponsors/Qalthos>__ (#266 <https://github.com/ansible/pylibssh/issues/266>__)
v0.2.0 (2021-03-01)
Bugfixes
- Fixed
undefined symbol: ssh_disconnectand related issues when building on certain distros -- by@Qalthos <https://github.com/sponsors/Qalthos>__ (#63 <https://github.com/ansible/pylibssh/issues/63>,#153 <https://github.com/ansible/pylibssh/issues/153>,#158 <https://github.com/ansible/pylibssh/issues/158>__) - Fixed
"Negative size passed to PyBytes_FromStringAndSize"whenssh_channel_read_nonblockingfails -- by@Qalthos <https://github.com/sponsors/Qalthos>__ (#168 <https://github.com/ansible/pylibssh/issues/168>__)
Features
- Added SCP support -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#151 <https://github.com/ansible/pylibssh/issues/151>,#157 <https://github.com/ansible/pylibssh/issues/157>)
Documentation
- Added the initial user guide to docs
-- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ and@webknjaz <https://github.com/sponsors/webknjaz>__ (#141 <https://github.com/ansible/pylibssh/issues/141>__) - Added the initial testing guide to docs
-- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ and@webknjaz <https://github.com/sponsors/webknjaz>__ (#142 <https://github.com/ansible/pylibssh/issues/142>__) - Added the initial installation guide to docs
-- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ and@webknjaz <https://github.com/sponsors/webknjaz>__ (#145 <https://github.com/ansible/pylibssh/issues/145>__)
Miscellaneous
- Migrated the "draft changelog" plugin to the external
sphinxcontrib-towncrier implementation <https://github.com/sphinx-contrib/sphinxcontrib-towncrier>__ -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#123 <https://github.com/ansible/pylibssh/issues/123>__) - Declared official support of CPython 3.9 -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ (#152 <https://github.com/ansible/pylibssh/issues/152>__)
v0.1.0 (2020-08-12)
Bugfixes
- Enhanced sftp error handling code to match
with libssh error messages -- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#27 <https://github.com/ansible/pylibssh/issues/27>__) - Fixed session timeout issue, the data type
of timeout is expected by
ssh_options_setis of typelong int-- by@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#46 <https://github.com/ansible/pylibssh/issues/46>__) - Fixed sftp file get issue. On py2
The file
write()method returnsNoneon py2 if bytes are written to file successfully, whereas on py3 it returns total number of bytes written to file. Added a fix to check for the number of bytes written only in the case whenwrite()does not returnNone-- by@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#58 <https://github.com/ansible/pylibssh/issues/58>__) - Fixed double close issue, added logic to free
the channel allocated memory within
__dealloc__()-- by@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#113 <https://github.com/ansible/pylibssh/issues/113>__)
Features
- Added cython extension for libssh client
API's initial commit -- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#1 <https://github.com/ansible/pylibssh/issues/1>__) - Added proxycommand support for session and
update session exception to
LibsshSessionException-- by@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#10 <https://github.com/ansible/pylibssh/issues/10>__) - Added support for host key checking with
authentication -- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#15 <https://github.com/ansible/pylibssh/issues/15>__) - Changed pylibssh dir to pylibsshext to avoid ns collision -- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#25 <https://github.com/ansible/pylibssh/issues/25>__) - Added sftp get functionality to fetch file
from remote host -- by
@amolkahat <https://github.com/sponsors/amolkahat>__ (#26 <https://github.com/ansible/pylibssh/issues/26>__) - Added support to receive bulk response
for remote shell -- by
@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#40 <https://github.com/ansible/pylibssh/issues/40>__) - Added the support for keyboard-authentication method -- by
@Qalthos <https://github.com/sponsors/Qalthos>__ (#105 <https://github.com/ansible/pylibssh/issues/105>__)
Backward incompatible changes
- Updated the package name to
ansible-pylibsshto reflect that the library only intends to implement a set of APIs that are necessary to implement an Ansible connection plugin -- by@ganeshrn <https://github.com/sponsors/ganeshrn>__ (#1 <https://github.com/ansible/pylibssh/issues/1>__)
Documentation
- Documented how to compose
Towncrier <https://towncrier.readthedocs.io/en/actual-freaking-docs/>__ news fragments -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#124 <https://github.com/ansible/pylibssh/issues/124>__) - Documented how to contribute to the docs -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ (#126 <https://github.com/ansible/pylibssh/issues/126>__)
Miscellaneous
-
Updated requirements file to replace
requirements.txtwithrequirements-build.in-- by@akasurde <https://github.com/sponsors/akasurde>__ (#14 <https://github.com/ansible/pylibssh/issues/14>__) -
Made tox's main env pick up the in-tree
PEP 517 <https://peps.python.org/pep-517>__ build backend -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#72 <https://github.com/ansible/pylibssh/issues/72>__) -
Refactored sphinx RST parsing in towncrier extension -- by
@ewjoachim <https://github.com/sponsors/ewjoachim>__ (#119 <https://github.com/ansible/pylibssh/issues/119>__) -
Hotfixed the directive in the in-tree sphinx extension to always trigger the changelog document rebuilds so that it'd pick up any changelog fragments from disk -- by
@webknjaz <https://github.com/sponsors/webknjaz>__ (#120 <https://github.com/ansible/pylibssh/issues/120>__) -
Turned the Townrier fragments README doc title into subtitle -- by
@webknjaz <https://github.com/sponsors/webknjaz>__The effect is that it doesn't show up in the side bar as an individual item anymore. (
#125 <https://github.com/ansible/pylibssh/issues/125>__) -
Integrated Markdown support into docs via the
MyST parser <https://myst-parser.readthedocs.io/>__ -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#126 <https://github.com/ansible/pylibssh/issues/126>__) -
Switched the builder on
Read the Docs <https://readthedocs.org/>__ todirhtml <https://www.sphinx-doc.org/en/master/usage/builders/index.html#sphinx.builders.dirhtml.DirectoryHTMLBuilder>__ so it now generates a dir-based URL layout for the website -- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#127 <https://github.com/ansible/pylibssh/issues/127>__) -
Enabled
sphinx.ext.autosectionlabel Sphinx extension <https://myst-parser.readthedocs.io/>__ to automatically generate reference targets for document sections that can be linked against using:ref:-- by@webknjaz <https://github.com/sponsors/webknjaz>__ (#128 <https://github.com/ansible/pylibssh/issues/128>__)