git.schokokeks.org
Repositories
Help
Report an Issue
fakesshagent.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
13ecb28
Branches
Tags
documentation-tree
master
wishlist
0.1
fakesshagent.git
0.x
pycompatibility
index.html
Deployed 3164cd76746f to 0.x with MkDocs 1.6.1 and mike 2.2.0
Marco Ricci
commited
13ecb28
at 2026-08-31 15:38:54
index.html
Blame
History
Raw
<!doctype html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta name="description" content="A non-hardened implementation of the SSH agent protocol, for use in testing."> <meta name="author" content="Marco Ricci"> <link rel="canonical" href="https://the13thletter.info/fakesshagent/0.x/pycompatibility/"> <link rel="prev" href="../upgrade-notes/"> <link rel="next" href="../wishlist/"> <link rel="icon" href="../assets/images/favicon.png"> <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7"> <title>Python compatibility - fakesshagent</title> <link rel="stylesheet" href="../assets/stylesheets/main.ec1eaa64.min.css"> <style>:root{--md-text-font:"Noto Sans";--md-code-font:"Noto Mono"}</style> <link rel="stylesheet" href="../assets/_mkdocstrings.css"> <link rel="stylesheet" href="../mkdocstrings_recommended_styles.css"> <link rel="stylesheet" href="../wishlist_styling.css"> </head> <body dir="ltr"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#compatibility-of-fakesshagent-with-different-python-versions" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <div data-md-color-scheme="default" data-md-component="outdated" hidden> </div> <div class="md-container" data-md-component="container"> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs"> <div class="md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href=".." class="md-tabs__link"> Overview </a> </li> <li class="md-tabs__item"> <a href="../explanation/" class="md-tabs__link"> Design & Background </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../changelog/" class="md-tabs__link"> Changelog </a> </li> <li class="md-tabs__item"> <a href="../wishlist/" class="md-tabs__link"> Wishlist </a> </li> </ul> </div> </nav> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href=".." title="fakesshagent" class="md-nav__button md-logo" aria-label="fakesshagent" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> fakesshagent </label> <div class="md-nav__source"> <a href="https://git.schokokeks.org/fakesshagent.git" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg> </div> <div class="md-source__repository"> the-13th-letter/fakesshagent </div> </a> </div> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href=".." class="md-nav__link"> <span class="md-ellipsis"> Overview </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" > <div class="md-nav__link md-nav__container"> <a href="../explanation/" class="md-nav__link "> <span class="md-ellipsis"> Design & Background </span> </a> <label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Design & Background </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../explanation/faq-altered-versions/" class="md-nav__link"> <span class="md-ellipsis"> "altered versions" license requirement </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" checked> <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex=""> <span class="md-ellipsis"> Changelog </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> Changelog </label> <ul class="md-nav__list" data-md-scrollfix> <li class="md-nav__item"> <a href="../changelog/" class="md-nav__link"> <span class="md-ellipsis"> Changelog </span> </a> </li> <li class="md-nav__item"> <a href="../upgrade-notes/" class="md-nav__link"> <span class="md-ellipsis"> Upgrade notes </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> Python compatibility </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Python compatibility </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#py3.15" class="md-nav__link"> <span class="md-ellipsis"> Python 3.15 </span> </a> </li> <li class="md-nav__item"> <a href="#py3.14" class="md-nav__link"> <span class="md-ellipsis"> Python 3.14 </span> </a> <nav class="md-nav" aria-label="Python 3.14"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.14" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.13" class="md-nav__link"> <span class="md-ellipsis"> Python 3.13 </span> </a> <nav class="md-nav" aria-label="Python 3.13"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.13" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.12" class="md-nav__link"> <span class="md-ellipsis"> Python 3.12 </span> </a> <nav class="md-nav" aria-label="Python 3.12"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.12" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.11" class="md-nav__link"> <span class="md-ellipsis"> Python 3.11 </span> </a> <nav class="md-nav" aria-label="Python 3.11"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.11" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.10" class="md-nav__link"> <span class="md-ellipsis"> Python 3.10 </span> </a> <nav class="md-nav" aria-label="Python 3.10"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.10" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.9" class="md-nav__link"> <span class="md-ellipsis"> Python 3.9 </span> </a> <nav class="md-nav" aria-label="Python 3.9"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.9" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.8-and-below" class="md-nav__link"> <span class="md-ellipsis"> Python 3.8 and below </span> </a> </li> <li class="md-nav__item"> <a href="#pypy" class="md-nav__link"> <span class="md-ellipsis"> PyPy </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" > <div class="md-nav__link md-nav__container"> <a href="../wishlist/" class="md-nav__link "> <span class="md-ellipsis"> Wishlist </span> </a> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> Wishlist </label> <ul class="md-nav__list" data-md-scrollfix> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" > <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix> <li class="md-nav__item"> <a href="#py3.15" class="md-nav__link"> <span class="md-ellipsis"> Python 3.15 </span> </a> </li> <li class="md-nav__item"> <a href="#py3.14" class="md-nav__link"> <span class="md-ellipsis"> Python 3.14 </span> </a> <nav class="md-nav" aria-label="Python 3.14"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.14" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.13" class="md-nav__link"> <span class="md-ellipsis"> Python 3.13 </span> </a> <nav class="md-nav" aria-label="Python 3.13"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.13" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.12" class="md-nav__link"> <span class="md-ellipsis"> Python 3.12 </span> </a> <nav class="md-nav" aria-label="Python 3.12"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.12" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.11" class="md-nav__link"> <span class="md-ellipsis"> Python 3.11 </span> </a> <nav class="md-nav" aria-label="Python 3.11"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.11" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.10" class="md-nav__link"> <span class="md-ellipsis"> Python 3.10 </span> </a> <nav class="md-nav" aria-label="Python 3.10"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.10" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.9" class="md-nav__link"> <span class="md-ellipsis"> Python 3.9 </span> </a> <nav class="md-nav" aria-label="Python 3.9"> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="#after-eol-py3.9" class="md-nav__link"> <span class="md-ellipsis"> After end-of-life </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="#py3.8-and-below" class="md-nav__link"> <span class="md-ellipsis"> Python 3.8 and below </span> </a> </li> <li class="md-nav__item"> <a href="#pypy" class="md-nav__link"> <span class="md-ellipsis"> PyPy </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <a href="https://git.schokokeks.org/fakesshagent.git/raw/master/docs/pycompatibility.md" title="View source of this page" class="md-content__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id="compatibility-of-fakesshagent-with-different-python-versions">Compatibility of <code>fakesshagent</code> with different Python versions<a class="headerlink" href="#compatibility-of-fakesshagent-with-different-python-versions" title="Permanent link">¶</a></h1> <h2 id="py3.15">Python 3.15<a class="headerlink" href="#py3.15" title="Permanent link">¶</a></h2> <p>Currently supported without any known issues.</p> <h2 id="py3.14">Python 3.14<a class="headerlink" href="#py3.14" title="Permanent link">¶</a></h2> <p>Currently supported without any known issues.</p> <h3 id="after-eol-py3.14">After end-of-life<a class="headerlink" href="#after-eol-py3.14" title="Permanent link">¶</a></h3> <p>After Python 3.14 reaches end-of-life, future <code>fakesshagent</code> versions may make use of the following Python functionality:</p> <ul> <li>lazy imports</li> <li>the <code>frozendict</code> type</li> </ul> <p>The declared minimum required Python version will then be updated accordingly.</p> <h2 id="py3.13">Python 3.13<a class="headerlink" href="#py3.13" title="Permanent link">¶</a></h2> <p>Currently supported without any known issues.</p> <h3 id="after-eol-py3.13">After end-of-life<a class="headerlink" href="#after-eol-py3.13" title="Permanent link">¶</a></h3> <p>After Python 3.13 reaches end-of-life, future <code>fakesshagent</code> versions may make use of the following Python functionality:</p> <ul> <li>template strings</li> </ul> <p>The declared minimum required Python version will then be updated accordingly.</p> <h2 id="py3.12">Python 3.12<a class="headerlink" href="#py3.12" title="Permanent link">¶</a></h2> <p>Currently supported without any known issues.</p> <h3 id="after-eol-py3.12">After end-of-life<a class="headerlink" href="#after-eol-py3.12" title="Permanent link">¶</a></h3> <p>Python 3.13 does not offer significantly different functionality than Python 3.12. There are thus no plans to make use of additional functionality once Python 3.12 reaches end-of-life.</p> <h2 id="py3.11">Python 3.11<a class="headerlink" href="#py3.11" title="Permanent link">¶</a></h2> <p>Currently supported without any known issues.</p> <h3 id="after-eol-py3.11">After end-of-life<a class="headerlink" href="#after-eol-py3.11" title="Permanent link">¶</a></h3> <p>After Python 3.11 reaches end-of-life, future <code>fakesshagent</code> versions may make use of the following Python functionality:</p> <ul> <li>complex expressions in f-strings</li> <li>type parameter syntax and the <code>type</code> statement</li> </ul> <p>The declared minimum required Python version will then be updated accordingly.</p> <h2 id="py3.10">Python 3.10<a class="headerlink" href="#py3.10" title="Permanent link">¶</a></h2> <p>Currently supported without any known issues.</p> <h3 id="after-eol-py3.10">After end-of-life<a class="headerlink" href="#after-eol-py3.10" title="Permanent link">¶</a></h3> <p>After Python 3.10 reaches end-of-life, future <code>fakesshagent</code> versions may make use of the following Python functionality:</p> <ul> <li>exception groups</li> <li>exception notes</li> <li><a class="autorefs autorefs-external" href="https://docs.python.org/3/library/contextlib.html#contextlib.chdir"><code>contextlib.chdir</code></a></li> </ul> <p>The declared minimum required Python version will be then updated accordingly.</p> <h2 id="py3.9">Python 3.9<a class="headerlink" href="#py3.9" title="Permanent link">¶</a></h2> <p>End-of-life since October 2025, but still supported at least until <code>fakesshagent</code> v1.0, without any known issues.</p> <h3 id="after-eol-py3.9">After end-of-life<a class="headerlink" href="#after-eol-py3.9" title="Permanent link">¶</a></h3> <p>After Python 3.9 reaches end-of-life, future <code>fakesshagent</code> versions may make use of the following Python functionality:</p> <ul> <li>structural pattern matching (<code>match</code>/<code>case</code> blocks)</li> <li>parenthesized <code>with</code> statements</li> </ul> <p>The declared minimum required Python version will be then updated accordingly.</p> <h2 id="py3.8-and-below">Python 3.8 and below<a class="headerlink" href="#py3.8-and-below" title="Permanent link">¶</a></h2> <p>These versions were never explicitly supported, neither in CPython nor in PyPy.</p> <h2 id="pypy">PyPy<a class="headerlink" href="#pypy" title="Permanent link">¶</a></h2> <p>As per the respective CPython version above.</p> </article> </div> </div> </main> <footer class="md-footer"> <nav class="md-footer__inner md-grid" aria-label="Footer" > <a href="../upgrade-notes/" class="md-footer__link md-footer__link--prev" aria-label="Previous: Upgrade notes"> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class="md-footer__title"> <span class="md-footer__direction"> Previous </span> <div class="md-ellipsis"> Upgrade notes </div> </div> </a> <a href="../wishlist/" class="md-footer__link md-footer__link--next" aria-label="Next: Bugs &amp; wishlist items"> <div class="md-footer__title"> <span class="md-footer__direction"> Next </span> <div class="md-ellipsis"> Bugs & wishlist items </div> </div> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> <div class="md-copyright__highlight"> Copyright © 2026 Marco Ricci (the-13th-letter) </div> Made with <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener"> Material for MkDocs </a> and <a href="https://mkdocstrings.github.io/python/" target="_blank" rel="noopener"> mkdocstrings-python </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> </body> </html>