René's URL Explorer Experiment


Title: Add support for python 3.12 by zephyrj · Pull Request #2 · parallel-ssh/ssh-python · GitHub

Open Graph Title: Add support for python 3.12 by zephyrj · Pull Request #2 · parallel-ssh/ssh-python

X Title: Add support for python 3.12 by zephyrj · Pull Request #2 · parallel-ssh/ssh-python

Description: Background I primarily use parallel-ssh rather than this library directly and wanted to update my environment to python 3.12. I had to go through a few steps to get it working so thought I'd try to contribute some effort in an attempt to hopefully help others. I've noticed that the main repo under the ParallelSSH org only has wheels built on PyPi for up to python 3.10 and the main maintainer of the project has not been keeping it up-to-date; as such I've been following on from the work done here that has been tracked through ParallelSSH/parallel-ssh#386 and initially added through #1 When trying to install ssh-python directly from the next branch I encounter the following error (note: without cython installed in my python environment) pip install git+https://github.com/parallel-ssh/ssh-python@next ... Building wheels for collected packages: ssh-python Building wheel for ssh-python (setup.py) ... error error: subprocess-exited-with-error × python setup.py bdist_wheel did not run successfully. ... ssh/callbacks.c: In function ‘__Pyx_PyInt_As_int’: ssh/callbacks.c:3931:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’ const digit* digits = ((PyLongObject*)x)->ob_digit; ^~ ssh/callbacks.c:3986:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’ const digit* digits = ((PyLongObject*)x)->ob_digit; ^~ ssh/callbacks.c: In function ‘__Pyx_PyInt_As_long’: ssh/callbacks.c:4203:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’ const digit* digits = ((PyLongObject*)x)->ob_digit; ^~ ssh/callbacks.c:4258:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’ const digit* digits = ((PyLongObject*)x)->ob_digit; ^~ ssh/callbacks.c: In function ‘__Pyx_PyIndex_AsSsize_t’: ssh/callbacks.c:4763:45: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’ const digit* digits = ((PyLongObject*)b)->ob_digit; ^~ error: command '/usr/bin/gcc' failed with exit code 1 If I install cython into my python environment then the above command works as, from my limited understanding, that results in it rebuilding the .c files which will subsequently be compatible with python 3.12 Changes made I've updated the libssh version to latest stable version of 0.10.6 + a patch with a fix for some IPv6 regressions see here. This includes updating the source in the libssh folder of the repo and including a tar.gz package that is used in the manylinux docker files. I've updated the manylinux docker files to use the latest openssl version of 3.3.0 and krb5 version of 1.21.2 alongside the new libssh version I've updated the setup.py file to match the work done in the sibling ssh2-python project for python 3.12 support and then regenerated the .c files with cython 3.0.10 so that they are compatible with python 3.12. You can now install ssh-python from the repos setup.py file without cython needing to be installed in your environment I've also updated some CI config to reference 3.12 but this is beyond my knowledge so some additional work may be required here by those more familiar Initial cibuidwheel support I also played around with cibuildwheel as I wanted to build wheels locally to test them; I've added some basic support for building manylinux wheels with it in the ci/cibuildwheel directory. It's only setup for CPython on x86_64 and aarch64 at present but could be expanded upon if desired

Open Graph Description: Background I primarily use parallel-ssh rather than this library directly and wanted to update my environment to python 3.12. I had to go through a few steps to get it working so thought I'd tr...

X Description: Background I primarily use parallel-ssh rather than this library directly and wanted to update my environment to python 3.12. I had to go through a few steps to get it working so thought I'...

Opengraph URL: https://github.com/parallel-ssh/ssh-python/pull/2

X: @github

direct link

Domain: patch-diff.githubusercontent.com

route-pattern/:user_id/:repository/pull/:id/checks(.:format)
route-controllerpull_requests
route-actionchecks
fetch-noncev2:65a3682d-0e7b-5807-5198-5e9f0610f7e0
current-catalog-service-hash87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a
request-idB99E:295123:CE7DE2:114E70C:697C39C4
html-safe-nonce7e4f7c4947e43a79da13af402a45651f3db58c3835363c6bc93b9df1fb26280d
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCOTlFOjI5NTEyMzpDRTdERTI6MTE0RTcwQzo2OTdDMzlDNCIsInZpc2l0b3JfaWQiOiIyNDczNDQ4MDYyMzk1ODkwMTE2IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac11e7bbb4e388ee2cb3bb2c3ebd3d417cbc23f0a470c86e3e91fac6be92059529
hovercard-subject-tagpull_request:1886381878
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/checks
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/parallel-ssh/ssh-python/pull/2/checks
twitter:imagehttps://avatars.githubusercontent.com/u/6891272?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/6891272?s=400&v=4
og:image:altBackground I primarily use parallel-ssh rather than this library directly and wanted to update my environment to python 3.12. I had to go through a few steps to get it working so thought I'd tr...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneda4f0ee56809799586f8ee546b27f94fe9b5893edfbf87732e82be45be013b52
turbo-cache-controlno-preview
go-importgithub.com/parallel-ssh/ssh-python git https://github.com/parallel-ssh/ssh-python.git
octolytics-dimension-user_id150726312
octolytics-dimension-user_loginparallel-ssh
octolytics-dimension-repository_id773351365
octolytics-dimension-repository_nwoparallel-ssh/ssh-python
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forktrue
octolytics-dimension-repository_parent_id135702111
octolytics-dimension-repository_parent_nwoParallelSSH/ssh-python
octolytics-dimension-repository_network_root_id135702111
octolytics-dimension-repository_network_root_nwoParallelSSH/ssh-python
turbo-body-classeslogged-out env-production page-responsive full-width full-width-p-0
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release787d8d274e314f52ce6d846c7581f9476d8dc736
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks#start-of-content
https://patch-diff.githubusercontent.com/
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fparallel-ssh%2Fssh-python%2Fpull%2F2%2Fchecks
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fparallel-ssh%2Fssh-python%2Fpull%2F2%2Fchecks
Sign up https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Fchecks&source=header-repo&source_repo=parallel-ssh%2Fssh-python
Reloadhttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks
Reloadhttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks
Reloadhttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks
parallel-ssh https://patch-diff.githubusercontent.com/parallel-ssh
ssh-pythonhttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python
ParallelSSH/ssh-pythonhttps://patch-diff.githubusercontent.com/ParallelSSH/ssh-python
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2Fparallel-ssh%2Fssh-python
Fork 1 https://patch-diff.githubusercontent.com/login?return_to=%2Fparallel-ssh%2Fssh-python
Star 0 https://patch-diff.githubusercontent.com/login?return_to=%2Fparallel-ssh%2Fssh-python
Code https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python
Issues 0 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/issues
Pull requests 1 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pulls
Discussions https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/discussions
Actions https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/actions
Projects 0 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/projects
Security 0 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/security
Insights https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pulse
Code https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python
Issues https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/issues
Pull requests https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pulls
Discussions https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/discussions
Actions https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/actions
Projects https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/projects
Security https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/security
Insights https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pulse
Sign up for GitHub https://patch-diff.githubusercontent.com/signup?return_to=%2Fparallel-ssh%2Fssh-python%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://patch-diff.githubusercontent.com/login?return_to=%2Fparallel-ssh%2Fssh-python%2Fissues%2Fnew%2Fchoose
zephyrjhttps://patch-diff.githubusercontent.com/zephyrj
parallel-ssh:nexthttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/tree/next
zephyrj:py3.12https://patch-diff.githubusercontent.com/zephyrj/ssh-python/tree/py3.12
Conversation 0 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2
Commits 4 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/commits
Checks 0 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks
Files changed https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/files
Please reload this pagehttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks
Please reload this pagehttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks
Add support for python 3.12 https://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks#top
Please reload this pagehttps://patch-diff.githubusercontent.com/parallel-ssh/ssh-python/pull/2/checks
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.