CINXE.COM

httpbin · PyPI

<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="defaultLanguage" content="en"> <meta name="availableLanguages" content="en, es, fr, ja, pt_BR, uk, el, de, zh_Hans, zh_Hant, ru, he, eo, ko"> <title>httpbin · PyPI</title> <meta name="description" content="HTTP Request and Response Service"> <link rel="stylesheet" href="/static/css/warehouse-ltr.4afe342a.css"> <link rel="stylesheet" href="/static/css/fontawesome.080e1050.css"> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+3:400,400italic,600,600italic,700,700italic%7CSource+Code+Pro:500"> <noscript> <link rel="stylesheet" href="/static/css/noscript.0673c9ea.css"> </noscript> <link rel="icon" href="/static/images/favicon.35549fe8.ico" type="image/x-icon"> <link rel="alternate" type="application/rss+xml" title="RSS: 40 latest updates" href="/rss/updates.xml"> <link rel="alternate" type="application/rss+xml" title="RSS: 40 newest packages" href="/rss/packages.xml"> <link rel="alternate" type="application/rss+xml" title="RSS: latest releases for httpbin" href="/rss/project/httpbin/releases.xml"> <link rel="canonical" href="https://pypi.org/project/httpbin/"> <meta property="og:url" content="https://pypi.org/project/httpbin/"> <meta property="og:site_name" content="PyPI"> <meta property="og:type" content="website"> <meta property="og:image" content="https://pypi.org/static/images/twitter.abaf4b19.webp"> <meta property="og:title" content="httpbin"> <meta property="og:description" content="HTTP Request and Response Service"> <link rel="search" type="application/opensearchdescription+xml" title="PyPI" href="/opensearch.xml"> <script async data-ga-id="UA-55961911-1" data-ga4-id="G-RW7D75DF8V" src="/static/js/warehouse.33c92630.js"> </script> <script> MathJax = { tex: { inlineMath: [['$', '$'], ['\\(', '\\)']] }, }; </script> <script async src="https://cdn.jsdelivr.net/npm/mathjax@3.2.2/es5/tex-svg.js" integrity="sha256-1CldwzdEg2k1wTmf7s5RWVd7NMXI/7nxxjJM2C4DqII=" crossorigin="anonymous" ></script> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-55961911-1"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-RW7D75DF8V"></script> <script defer src="https://www.fastly-insights.com/insights.js?k=6a52360a-f306-421e-8ed5-7417d0d4a4e9&dnt=true"></script> <script async src="https://media.ethicalads.io/media/client/v1.4.0/ethicalads.min.js" integrity="sha256-U3hKDidudIaxBDEzwGJApJgPEf2mWk6cfMWghrAa6i0= sha384-UcmsCqcNRSLW/dV3Lo1oCi2/VaurXbib6p4HyUEOeIa/4OpsrnucrugAefzVZJfI sha512-q4t1L4xEjGV2R4hzqCa41P8jrgFUS8xTb8rdNv4FGvw7FpydVj/kkxBJHOiaoxHa8olCcx1Slk9K+3sNbsM4ug==" crossorigin="anonymous" ></script> </head> <body data-controller="viewport-toggle"> <!-- Accessibility: this link should always be the first piece of content inside the body--> <a href="#content" class="skip-to-content">Skip to main content</a> <button type="button" class="button button--primary button--switch-to-mobile hidden" data-viewport-toggle-target="switchToMobile" data-action="viewport-toggle#switchToMobile"> Switch to mobile version </button> <div id="sticky-notifications" class="stick-to-top js-stick-to-top"> <!-- Add browser warning. Will show for ie9 and below --> <!--[if IE]> <div class="notification-bar notification-bar--warning" role="status"> <span class="notification-bar__icon"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> <span class="sr-only">Warning</span> </span> <span class="notification-bar__message">You are using an unsupported browser, upgrade to a newer version.</span> </div> <![endif]--> <noscript> <div class="notification-bar notification-bar--warning" role="status"> <span class="notification-bar__icon"> <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> <span class="sr-only">Warning</span> </span> <span class="notification-bar__message">Some features may not work without JavaScript. Please try enabling it if you encounter problems.</span> </div> </noscript> <div data-html-include="/_includes/unauthed/notification-banners/"></div> </div> <div data-html-include="/_includes/authed/flash-messages/"></div> <div data-html-include="/_includes/authed/session-notifications/"></div> <header class="site-header "> <div class="site-container"> <div class="split-layout"> <div class="split-layout"> <div> <a class="site-header__logo" href="/"> <img alt="PyPI" src="/static/images/logo-small.8998e9d1.svg"> </a> </div> <form class="search-form search-form--primary" action="/search/" role="search"> <label for="search" class="sr-only">Search PyPI</label> <input id="search" class="search-form__search" type="text" name="q" placeholder="Search projects" value="" autocomplete="off" autocapitalize="off" spellcheck="false" data-controller="search-focus" data-action="keydown@window->search-focus#focusSearchField" data-search-focus-target="searchField"> <button type="submit" class="search-form__button"> <i class="fa fa-search" aria-hidden="true"></i> <span class="sr-only">Search</span> </button> </form> </div> <div data-html-include="/_includes/authed/current-user-indicator/"> <div id="user-indicator" class="horizontal-menu horizontal-menu--light horizontal-menu--tall"> <nav class="horizontal-menu horizontal-menu--light horizontal-menu--tall hide-on-tablet" aria-label="Main navigation"> <ul> <li class="horizontal-menu__item"><a href="/help/" class="horizontal-menu__link">Help</a></li> <li class="horizontal-menu__item"><a href="/sponsors/" class="horizontal-menu__link">Sponsors</a></li> <li class="horizontal-menu__item"><a href="/account/login/" class="horizontal-menu__link">Log in</a></li> <li class="horizontal-menu__item"><a href="/account/register/" class="horizontal-menu__link">Register</a></li> </ul> </nav> <nav class="dropdown dropdown--on-menu hidden show-on-tablet" aria-label="Main navigation"> <button type="button" class="horizontal-menu__link dropdown__trigger" aria-haspopup="true" aria-expanded="false" aria-label="View menu"> Menu <span class="dropdown__trigger-caret"> <i class="fa fa-caret-down" aria-hidden="true"></i> </span> </button> <ul class="dropdown__content" aria-hidden="true" aria-label="Main menu"> <li><a class="dropdown__link" href="/help/">Help</a></li> <li><a class="dropdown__link" href="/sponsors/">Sponsors</a></li> <li><a class="dropdown__link" href="/account/login/">Log in</a></li> <li><a class="dropdown__link" href="/account/register/">Register</a></li> </ul> </nav> </div> </div> </div> </div> </header> <div class="mobile-search"> <form class="search-form search-form--fullwidth" action="/search/" role="search"> <label for="mobile-search" class="sr-only">Search PyPI</label> <input id="mobile-search" class="search-form__search" type="text" name="q" placeholder="Search projects" value="" autocomplete="off" autocapitalize="off" spellcheck="false"> <button type="submit" class="search-form__button"> <i class="fa fa-search" aria-hidden="true"></i> <span class="sr-only">Search</span> </button> </form> </div> <main id="content"> <div class="banner"> <div class="package-header"> <div class="package-header__left"> <h1 class="package-header__name"> httpbin 0.10.2 </h1> <div data-controller="clipboard"> <p class="package-header__pip-instructions"> <span id="pip-command" data-clipboard-target="source">pip install httpbin</span> <button type="button" class="copy-tooltip copy-tooltip-s" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard"> <i class="fa fa-copy" aria-hidden="true"></i> <span class="sr-only">Copy PIP instructions</span> </button> </p> </div> </div> <div class="package-header__right"> <a class="status-badge status-badge--good" href="/project/httpbin/"> <span>Latest version</span> </a> <p class="package-header__date"> Released: <time datetime="2024-02-20T21:30:12+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Feb 20, 2024 </time> </p> </div> </div> </div> <div class="horizontal-section horizontal-section--grey horizontal-section--thin"> <div class="site-container"> <div data-html-include="/_includes/authed/administer-project-include/httpbin"></div> <div class="split-layout split-layout--middle package-description"> <p class="package-description__summary">HTTP Request and Response Service</p> <div data-html-include="/_includes/authed/edit-project-button/httpbin"></div> </div> </div> </div> <div data-controller="project-tabs"> <div class="tabs-container"> <div class="vertical-tabs"> <div class="vertical-tabs__tabs"> <div class="sidebar-section"> <h3 class="sidebar-section__title">Navigation</h3> <nav aria-label="Navigation for httpbin"> <ul class="vertical-tabs__list" role="tablist"> <li role="tab"> <a id="description-tab" href="#description" data-project-tabs-target="tab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--is-active" aria-selected="true" aria-label="Project description. Focus will be moved to the description."> <i class="fa fa-align-left" aria-hidden="true"></i> Project description </a> </li> <li role="tab"> <a id="history-tab" href="#history" data-project-tabs-target="tab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon" aria-label="Release history. Focus will be moved to the history panel."> <i class="fa fa-history" aria-hidden="true"></i> Release history </a> </li> <li role="tab"> <a id="files-tab" href="#files" data-project-tabs-target="tab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon" aria-label="Download files. Focus will be moved to the project files."> <i class="fa fa-download" aria-hidden="true"></i> Download files </a> </li> </ul> </nav> </div> <div class="sidebar-section verified"> <h3 class="sidebar-section__title"> Verified details <i class="fa fa-circle-check check" title="Verified by PyPI on 2024-02-20"></i> </h3> <small><i>These details have been <a href="https://docs.pypi.org/project_metadata/#verified-details">verified by PyPI</a></i></small> <h6>Maintainers</h6> <span class="sidebar-section__maintainer"> <a href="/user/graffatcolmingov/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/cc51c37d0c7604e3c0825efceb9e26f84427f67e/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f33393665336465353333323061626639383535643931326364336439343331663f73697a653d3530" height="50" width="50" alt="Avatar for graffatcolmingov from gravatar.com" title="Avatar for graffatcolmingov from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> graffatcolmingov </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/kennethreitz/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/0c13a978491eddd23bf8f625ea4b120a151b40b8/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f62303262326630323064636162393263626335633739363133303731313139663f73697a653d3530" height="50" width="50" alt="Avatar for kennethreitz from gravatar.com" title="Avatar for kennethreitz from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> kennethreitz </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/kevin1024/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/b84a05104e89165bd2c2d819b0fa9cff4a4579ca/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f62336237386261316163626630396261323032393837643264393361623732663f73697a653d3530" height="50" width="50" alt="Avatar for kevin1024 from gravatar.com" title="Avatar for kevin1024 from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> kevin1024 </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/nateprewitt/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/b35e3b7909504680a0db25a146ec8ef1028830e6/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f66333733383231373065396436613962363632653739353331313730343232653f73697a653d3530" height="50" width="50" alt="Avatar for nateprewitt from gravatar.com" title="Avatar for nateprewitt from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> nateprewitt </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/tuxtimo/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/6728a7c70c1eb8550f718102a7f81d7f94fdd5b9/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f62313363656162323533666437343034336130653031336236663636333832303f73697a653d3530" height="50" width="50" alt="Avatar for tuxtimo from gravatar.com" title="Avatar for tuxtimo from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> tuxtimo </span> </a> </span> </div> <div class="sidebar-section unverified"> <h3 class="sidebar-section__title">Unverified details</h3> <small><i>These details have <b>not</b> been verified by PyPI</i></small> <h6>Project links</h6> <ul class="vertical-tabs__list"> <li> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" href="https://pypi.org/project/httpbin/" rel="nofollow"> <i class="fas fa-cube" aria-hidden="true"></i>pypi </a> </li> <li> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" href="https://github.com/psf/httpbin" rel="nofollow"> <i class="fab fa-github" aria-hidden="true"></i>Repository </a> </li> </ul> <div class="sidebar-section unverified"> <h6>Meta</h6> <ul> <li> <span> <strong>License:</strong> ISC License (ISCL), MIT License (MIT or ISC) </span> </li> <li> <span> <strong>Author:</strong> <a href="mailto:me@kennethreitz.org">Kenneth Reitz</a> </span> </li> <li> <span> <strong>Requires:</strong> Python &gt;=3.7 </span> </li> </ul> </div> <div class="sidebar-section unverified"> <h6 class="sidebar-section__title">Classifiers</h6> <ul class="sidebar-section__classifiers"> <li> <strong>Development Status</strong> <ul> <li> <a href="/search/?c=Development+Status+%3A%3A+5+-+Production%2FStable"> 5 - Production/Stable </a> </li> </ul> </li> <li> <strong>Intended Audience</strong> <ul> <li> <a href="/search/?c=Intended+Audience+%3A%3A+Developers"> Developers </a> </li> </ul> </li> <li> <strong>License</strong> <ul> <li> <a href="/search/?c=License+%3A%3A+OSI+Approved+%3A%3A+ISC+License+%28ISCL%29"> OSI Approved :: ISC License (ISCL) </a> </li> <li> <a href="/search/?c=License+%3A%3A+OSI+Approved+%3A%3A+MIT+License"> OSI Approved :: MIT License </a> </li> </ul> </li> <li> <strong>Natural Language</strong> <ul> <li> <a href="/search/?c=Natural+Language+%3A%3A+English"> English </a> </li> </ul> </li> <li> <strong>Programming Language</strong> <ul> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python"> Python </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.7"> Python :: 3.7 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.8"> Python :: 3.8 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.9"> Python :: 3.9 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.10"> Python :: 3.10 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.11"> Python :: 3.11 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.12"> Python :: 3.12 </a> </li> </ul> </li> </ul> </div> </div><div class="sidebar-section" data-ea-publisher="psf" data-ea-type="psf" data-ea-keywords="pypi-sidebar"></div> <div data-html-include="https://pypi.org/_includes/authed/submit-malware-report/httpbin"></div> </div> <div class="vertical-tabs__panel"> <!-- mobile menu --> <nav aria-label="Navigation for httpbin"> <ul class="vertical-tabs__list" role="tablist"> <li role="tab"> <a id="mobile-description-tab" href="#description" data-project-tabs-target="mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile vertical-tabs__tab--no-top-border vertical-tabs__tab--is-active" aria-selected="true" aria-label="Project description. Focus will be moved to the description."> <i class="fa fa-align-left" aria-hidden="true"></i> Project description </a> </li> <li role="tab"> <a id="mobile-data-tab" href="#data" data-project-tabs-target="mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile" aria-label="Project details. Focus will be moved to the project details."> <i class="fa fa-info-circle" aria-hidden="true"></i> Project details </a> </li> <li role="tab"> <a id="mobile-history-tab" href="#history" data-project-tabs-target="mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile" aria-label="Release history. Focus will be moved to the history panel."> <i class="fa fa-history" aria-hidden="true"></i> Release history </a> </li> <li role="tab"> <a id="mobile-files-tab" href="#files" data-project-tabs-target="mobileTab" data-action="project-tabs#onTabClick" class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--mobile" aria-label="Download files. Focus will be moved to the project files."> <i class="fa fa-download" aria-hidden="true"></i> Download files </a> </li> </ul> </nav> <div id="description" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="description-tab mobile-description-tab" tabindex="-1"> <h2 class="page-title">Project description</h2> <div class="project-description"> <h1>httpbin(1): HTTP Request &amp; Response Service</h1> <p>This is a fork of the original httpbin project, which is located at <a href="https://github.com/postmanlabs/httpbin" rel=nofollow>https://github.com/postmanlabs/httpbin</a></p> <p>Why fork? we were unable to get ahold of the folks at postmanlabs to maintain the original project, and httpbin is used for other packages within the python ecosystem, such as <a href="https://pypi.org/project/pytest-httpbin/" rel=nofollow>pytest-httpbin</a> which is in turn used by packages such as <a href="https://github.com/psf/requests/blob/main/requirements-dev.txt#L4" rel=nofollow>requests</a> so we have forked this package. That means that httpbin.org is not actually backed by this repo, but the <a href="https://pypi.org/project/httpbin/" rel=nofollow>httpbin package</a> is. Confusing right? Know anyone at postmanlabs? <a href=mailto:me@kevinmccarthy.org rel=nofollow>get in touch</a>.</p> <p>httpbin is a <a href="http://kennethreitz.org/" rel=nofollow>Kenneth Reitz</a> Project. <img src="https://pypi-camo.freetls.fastly.net/12d7d13a34014e05376371a8d3d4a90443376f4b/687474703a2f2f6661726d312e737461746963666c69636b722e636f6d2f3537322f33323531343636393638335f346461663261623762635f6b5f642e6a7067" alt="ice cream"></p> <h2>Downloading and Running</h2> <pre lang=sh>docker<span class=w> </span>pull<span class=w> </span>ghcr.io/psf/httpbin docker<span class=w> </span>run<span class=w> </span>-p<span class=w> </span><span class=m>80</span>:8080<span class=w> </span>ghcr.io/psf/httpbin </pre> <h2>Using <code>httpbin</code> as a Library</h2> <p><code>httpbin</code> can be used as a dependency in your own projects by simply adding <code>httpbin</code> as a dependency.</p> <h2>Manually Building the Latest Docker Image</h2> <p>To build the Docker image yourself, download the latest <code>Dockerfile</code> and <code>requirements.txt</code> files from the <a href="https://github.com/psf/httpbin/releases" rel=nofollow>release page</a>. Store both file in the same folder and run:</p> <pre lang=sh>docker<span class=w> </span>build<span class=w> </span>--build-arg<span class=w> </span><span class=nv>APP_VERSION</span><span class=o>=</span>&lt;your-version&gt;<span class=w> </span><span class=o>[</span>other<span class=w> </span>docker<span class=w> </span>args<span class=o>]</span><span class=w> </span>. </pre> <p>Alternatively, you can re-generate a new <code>requirements.txt</code> file using <a href="https://pip-tools.readthedocs.io/en/latest/" rel=nofollow>pip-compile</a>. In that case, be aware that the code has not been tested against those dependencies and we cannot guarantee that such an image will run without errors.</p> <p>Where <code>APP_VERSION</code> will be stored in a docker-label. The default value is an empty-string.</p> <h2>Maintenance</h2> <h3>"Extra" Dependencies</h3> <p>The project provides two "extras" which contain dependencies that should only be installed for specific use-cases. They will not be included when using <code>httpbin</code> as a dependency, unless they are <em>explicitly</em> requested like <code>httpbin[mainapp]</code>.</p> <ul> <li><code>mainapp</code>: Includes everything needed to run <code>httpbin</code> as a standalone app. This is used by the docker image.</li> <li><code>test</code>: Includes additional dependencies for unit-testing. This is only used during development.</li> </ul> <h3>Publishing a new Release</h3> <p>Releases (both docker and pypi) are automated via GitHub Actions (See #17).</p> <p>For <em>pypi</em> releases, the project uses <a href="https://docs.pypi.org/trusted-publishers/" rel=nofollow>trusted-publishing</a> via <a href="https://github.com/pypa/gh-action-pypi-publish" rel=nofollow>the official GitHub action</a>.</p> <p>For releases on <em>docker-hub</em> (when enabled in the CI), the following two secrets are required:</p> <ul> <li><code>DOCKERHUB_USERNAME</code></li> <li><code>DOCKERHUB_TOKEN</code></li> </ul> <p>Releases are triggered on commits tagged with <code>release-</code> (for example <code>release-0.10.0</code>).</p> <h2>Changelog</h2> <ul> <li>0.10.2: <ul> <li>Added support for Flask 3.0</li> </ul> </li> <li>0.10.1: <ul> <li>Substantial housekeeping, dependency cleanup, image building, and packaging revamp, thanks to @exhuma and @mgorny</li> </ul> </li> <li>0.10.0: <ul> <li>Override docker image port with HTTPBIN_PORT</li> <li>A number of fixes for code rot, thanks @mgorny and @tjni</li> </ul> </li> <li>0.9.2: ??? (never published as a package; seems to be internal to postman)</li> <li>0.7.0: ???</li> <li>0.6.2: ???</li> <li>0.6.0: ???</li> <li>0.5.0 <ul> <li>Allow /redirect-to to work with multiple methods</li> <li>Allow MD5 or SHA-256 to be chosen as algorithms for HTTP Digest Auth</li> <li>Set a 10MB limit on /drip</li> </ul> </li> <li>0.4.1: Added floating-point support for /delay endpoint</li> <li>0.4.0: New /image/svg endpoint, add deploy to heroku button, add 406 response to /image, and don’t always emit the transfer-encoding header for stream endpoint.</li> <li>0.3.0 A number of new features, including a /range endpoint, lots of bugfixes, and a /encoding/utf8 endpoint</li> <li>0.2.0: Added an XML endpoint. Also fixes several bugs with unicode, CORS headers, digest auth, and more.</li> <li>0.1.2: Fix a couple Python3 bugs with the random byte endpoints, fix a bug when uploading files without a Content-Type header set.</li> <li>0.1.1: Added templates as data in setup.py</li> <li>0.1.0: Added python3 support and (re)publish on PyPI</li> </ul> <h2>Officially Deployed (but out of date) at:</h2> <ul> <li><a href="http://httpbin.org" rel=nofollow>http://httpbin.org</a></li> <li><a href="https://httpbin.org" rel=nofollow>https://httpbin.org</a></li> <li><a href="https://hub.docker.com/r/kennethreitz/httpbin/" rel=nofollow>https://hub.docker.com/r/kennethreitz/httpbin/</a></li> </ul> <h2>SEE ALSO</h2> <ul> <li><a href="http://requestb.in" rel=nofollow>http://requestb.in</a></li> <li><a href="http://python-requests.org" rel=nofollow>http://python-requests.org</a></li> <li><a href="https://grpcb.in/" rel=nofollow>https://grpcb.in/</a></li> <li><a href="https://github.com/ahmetb/go-httpbin" rel=nofollow>go-httpbin</a></li> <li><a href="https://github.com/gaul/java-httpbin" rel=nofollow>java-httpbin</a></li> </ul> </div> </div> <div id="data" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="mobile-data-tab" tabindex="-1"> <h2 class="page-title">Project details</h2> <div class="sidebar-section verified"> <h3 class="sidebar-section__title"> Verified details <i class="fa fa-circle-check check" title="Verified by PyPI on 2024-02-20"></i> </h3> <small><i>These details have been <a href="https://docs.pypi.org/project_metadata/#verified-details">verified by PyPI</a></i></small> <h6>Maintainers</h6> <span class="sidebar-section__maintainer"> <a href="/user/graffatcolmingov/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/cc51c37d0c7604e3c0825efceb9e26f84427f67e/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f33393665336465353333323061626639383535643931326364336439343331663f73697a653d3530" height="50" width="50" alt="Avatar for graffatcolmingov from gravatar.com" title="Avatar for graffatcolmingov from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> graffatcolmingov </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/kennethreitz/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/0c13a978491eddd23bf8f625ea4b120a151b40b8/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f62303262326630323064636162393263626335633739363133303731313139663f73697a653d3530" height="50" width="50" alt="Avatar for kennethreitz from gravatar.com" title="Avatar for kennethreitz from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> kennethreitz </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/kevin1024/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/b84a05104e89165bd2c2d819b0fa9cff4a4579ca/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f62336237386261316163626630396261323032393837643264393361623732663f73697a653d3530" height="50" width="50" alt="Avatar for kevin1024 from gravatar.com" title="Avatar for kevin1024 from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> kevin1024 </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/nateprewitt/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/b35e3b7909504680a0db25a146ec8ef1028830e6/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f66333733383231373065396436613962363632653739353331313730343232653f73697a653d3530" height="50" width="50" alt="Avatar for nateprewitt from gravatar.com" title="Avatar for nateprewitt from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> nateprewitt </span> </a> </span> <span class="sidebar-section__maintainer"> <a href="/user/tuxtimo/" aria-label=""> <span class="sidebar-section__user-gravatar"> <img src="https://pypi-camo.freetls.fastly.net/6728a7c70c1eb8550f718102a7f81d7f94fdd5b9/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f62313363656162323533666437343034336130653031336236663636333832303f73697a653d3530" height="50" width="50" alt="Avatar for tuxtimo from gravatar.com" title="Avatar for tuxtimo from gravatar.com"> </span> <span class="sidebar-section__user-gravatar-text"> tuxtimo </span> </a> </span> </div> <div class="sidebar-section unverified"> <h3 class="sidebar-section__title">Unverified details</h3> <small><i>These details have <b>not</b> been verified by PyPI</i></small> <h6>Project links</h6> <ul class="vertical-tabs__list"> <li> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" href="https://pypi.org/project/httpbin/" rel="nofollow"> <i class="fas fa-cube" aria-hidden="true"></i>pypi </a> </li> <li> <a class="vertical-tabs__tab vertical-tabs__tab--with-icon vertical-tabs__tab--condensed" href="https://github.com/psf/httpbin" rel="nofollow"> <i class="fab fa-github" aria-hidden="true"></i>Repository </a> </li> </ul> <div class="sidebar-section unverified"> <h6>Meta</h6> <ul> <li> <span> <strong>License:</strong> ISC License (ISCL), MIT License (MIT or ISC) </span> </li> <li> <span> <strong>Author:</strong> <a href="mailto:me@kennethreitz.org">Kenneth Reitz</a> </span> </li> <li> <span> <strong>Requires:</strong> Python &gt;=3.7 </span> </li> </ul> </div> <div class="sidebar-section unverified"> <h6 class="sidebar-section__title">Classifiers</h6> <ul class="sidebar-section__classifiers"> <li> <strong>Development Status</strong> <ul> <li> <a href="/search/?c=Development+Status+%3A%3A+5+-+Production%2FStable"> 5 - Production/Stable </a> </li> </ul> </li> <li> <strong>Intended Audience</strong> <ul> <li> <a href="/search/?c=Intended+Audience+%3A%3A+Developers"> Developers </a> </li> </ul> </li> <li> <strong>License</strong> <ul> <li> <a href="/search/?c=License+%3A%3A+OSI+Approved+%3A%3A+ISC+License+%28ISCL%29"> OSI Approved :: ISC License (ISCL) </a> </li> <li> <a href="/search/?c=License+%3A%3A+OSI+Approved+%3A%3A+MIT+License"> OSI Approved :: MIT License </a> </li> </ul> </li> <li> <strong>Natural Language</strong> <ul> <li> <a href="/search/?c=Natural+Language+%3A%3A+English"> English </a> </li> </ul> </li> <li> <strong>Programming Language</strong> <ul> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python"> Python </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.7"> Python :: 3.7 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.8"> Python :: 3.8 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.9"> Python :: 3.9 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.10"> Python :: 3.10 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.11"> Python :: 3.11 </a> </li> <li> <a href="/search/?c=Programming+Language+%3A%3A+Python+%3A%3A+3.12"> Python :: 3.12 </a> </li> </ul> </li> </ul> </div> </div> <br> </div> <div id="history" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="history-tab mobile-history-tab" tabindex="-1"> <h2 class="page-title split-layout"> <span>Release history</span> <span class="reset-text margin-top"> <a href="/help/#project-release-notifications">Release notifications</a> | <a href="/rss/project/httpbin/releases.xml">RSS feed <i class="fa fa-rss" aria-hidden="true"></i></a> </span> </h2> <div class="release-timeline"> <div class="release release--latest release--current"> <div class="release__meta"> <span class="badge">This version</span> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/blue-cube.572a5bfb.svg"> </div> <a class="card release__card" href="/project/httpbin/0.10.2/"> <p class="release__version"> 0.10.2 </p> <p class="release__version-date"> <time datetime="2024-02-20T21:30:12+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Feb 20, 2024 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.10.1/"> <p class="release__version"> 0.10.1 </p> <p class="release__version-date"> <time datetime="2023-08-28T22:56:36+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Aug 28, 2023 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.10.0/"> <p class="release__version"> 0.10.0 </p> <p class="release__version-date"> <time datetime="2023-08-10T23:33:49+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Aug 10, 2023 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.7.0/"> <p class="release__version"> 0.7.0 </p> <p class="release__version-date"> <time datetime="2018-05-08T12:00:46+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> May 8, 2018 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.6.2/"> <p class="release__version"> 0.6.2 </p> <p class="release__version-date"> <time datetime="2017-10-19T12:20:13+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Oct 19, 2017 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.6.1/"> <p class="release__version"> 0.6.1 </p> <p class="release__version-date"> <time datetime="2017-08-27T19:14:21+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Aug 27, 2017 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.6.0/"> <p class="release__version"> 0.6.0 </p> <p class="release__version-date"> <time datetime="2017-08-25T22:36:36+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Aug 25, 2017 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.5.0/"> <p class="release__version"> 0.5.0 </p> <p class="release__version-date"> <time datetime="2016-08-15T11:33:29+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Aug 15, 2016 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.4.1/"> <p class="release__version"> 0.4.1 </p> <p class="release__version-date"> <time datetime="2016-01-27T16:04:17+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Jan 27, 2016 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.4.0/"> <p class="release__version"> 0.4.0 </p> <p class="release__version-date"> <time datetime="2015-10-22T19:03:38+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Oct 22, 2015 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.3.0/"> <p class="release__version"> 0.3.0 </p> <p class="release__version-date"> <time datetime="2015-09-06T04:25:28+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Sep 6, 2015 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.2.1/"> <p class="release__version"> 0.2.1 </p> <p class="release__version-date"> <time datetime="2014-12-23T23:40:31+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Dec 23, 2014 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.2.0/"> <p class="release__version"> 0.2.0 </p> <p class="release__version-date"> <time datetime="2014-07-06T20:35:32+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Jul 6, 2014 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.1.2/"> <p class="release__version"> 0.1.2 </p> <p class="release__version-date"> <time datetime="2014-06-09T04:04:37+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Jun 9, 2014 </time> </p> </a> </div> <div class="release"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.1.1/"> <p class="release__version"> 0.1.1 </p> <p class="release__version-date"> <time datetime="2014-06-01T22:10:20+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Jun 1, 2014 </time> </p> </a> </div> <div class="release release--oldest"> <div class="release__meta"> </div> <div class="release__graphic"> <div class="release__line"></div> <img class="release__node" alt="" src="https://pypi.org/static/images/white-cube.2351a86c.svg"> </div> <a class="card release__card" href="/project/httpbin/0.1.0/"> <p class="release__version"> 0.1.0 </p> <p class="release__version-date"> <time datetime="2014-05-30T18:48:43+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> May 30, 2014 </time> </p> </a> </div> </div> </div> <div id="files" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="files-tab mobile-files-tab" tabindex="-1"> <h2 class="page-title">Download files</h2> <p>Download the file for your platform. If you're not sure which to choose, learn more about <a href="https://packaging.python.org/tutorials/installing-packages/" title="External link" target="_blank" rel="noopener">installing packages</a>.</p> <h3> Source Distribution </h3> <div class="file"> <div class="file__graphic"> <i class="far fa-file" aria-hidden="true"></i> </div> <div class="card file__card"> <a href="https://files.pythonhosted.org/packages/61/90/e2eeeedc96fbfd9345dff0407574b8edb8ff97ad1682ef518bdfaf096dd5/httpbin-0.10.2.tar.gz"> httpbin-0.10.2.tar.gz </a> (107.3 kB <a href="#httpbin-0.10.2.tar.gz" data-project-tabs-target="tab" data-action="project-tabs#onTabClick">view details</a>) <p class="file__meta"> Uploaded <time datetime="2024-02-20T21:30:15+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Feb 20, 2024 </time> <code>Source</code> </p> </div> </div> <h3> Built Distribution </h3> <div class="file"> <div class="file__graphic"> <i class="far fa-file" aria-hidden="true"></i> </div> <div class="card file__card"> <a href="https://files.pythonhosted.org/packages/1f/2a/12e12f8f07070cd12b46c60fd8fd709ff01414830213bfc5153ab527331f/httpbin-0.10.2-py2.py3-none-any.whl"> httpbin-0.10.2-py2.py3-none-any.whl </a> (100.3 kB <a href="#httpbin-0.10.2-py2.py3-none-any.whl" data-project-tabs-target="tab" data-action="project-tabs#onTabClick">view details</a>) <p class="file__meta"> Uploaded <time datetime="2024-02-20T21:30:12+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Feb 20, 2024 </time> <code>Python 2</code> <code>Python 3</code> </p> </div> </div> </div> <div id="httpbin-0.10.2.tar.gz" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="file-tab mobile-file-tab" tabindex="-1"> <h2 class="page-title">File details</h2> <p>Details for the file <code>httpbin-0.10.2.tar.gz</code>.</p> <h3>File metadata</h3> <div> <ul> <li> Download URL: <a href="https://files.pythonhosted.org/packages/61/90/e2eeeedc96fbfd9345dff0407574b8edb8ff97ad1682ef518bdfaf096dd5/httpbin-0.10.2.tar.gz"> httpbin-0.10.2.tar.gz </a> </li> <li>Upload date: <time datetime="2024-02-20T21:30:15+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Feb 20, 2024 </time></li> <li>Size: 107.3 kB</li> <li>Tags: Source</li> <li> Uploaded using Trusted Publishing? Yes </li> <li>Uploaded via: twine/4.0.2 CPython/3.11.8</li> </ul> </div> <h3>File hashes</h3> <div> <table class="table table--hashes"> <caption class="sr-only">Hashes for httpbin-0.10.2.tar.gz</caption> <thead> <tr> <th scope="col">Algorithm</th> <th scope="col">Hash digest</th> <th></th> </tr> </thead> <tbody> <tr data-controller="clipboard"> <th scope="row">SHA256</th> <td><code data-clipboard-target="source">632148698261c8684ea2d2b624cdea845b402b1fe91736e89df886408c6317a9</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard"> Copy </button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">MD5</th> <td><code data-clipboard-target="source">f7eefe44907a031db3322832945c4349</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard"> Copy </button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">BLAKE2b-256</th> <td><code data-clipboard-target="source">6190e2eeeedc96fbfd9345dff0407574b8edb8ff97ad1682ef518bdfaf096dd5</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard"> Copy </button> </td> </tr> </tbody> </table> <p> <a href="https://pip.pypa.io/en/stable/topics/secure-installs/#hash-checking-mode" title="External link" target="_blank" rel="noopener">See more details on using hashes here.</a> </p> </div> </div> <div id="httpbin-0.10.2-py2.py3-none-any.whl" data-project-tabs-target="content" class="vertical-tabs__content" role="tabpanel" aria-labelledby="file-tab mobile-file-tab" tabindex="-1"> <h2 class="page-title">File details</h2> <p>Details for the file <code>httpbin-0.10.2-py2.py3-none-any.whl</code>.</p> <h3>File metadata</h3> <div> <ul> <li> Download URL: <a href="https://files.pythonhosted.org/packages/1f/2a/12e12f8f07070cd12b46c60fd8fd709ff01414830213bfc5153ab527331f/httpbin-0.10.2-py2.py3-none-any.whl"> httpbin-0.10.2-py2.py3-none-any.whl </a> </li> <li>Upload date: <time datetime="2024-02-20T21:30:12+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> Feb 20, 2024 </time></li> <li>Size: 100.3 kB</li> <li>Tags: Python 2, Python 3</li> <li> Uploaded using Trusted Publishing? Yes </li> <li>Uploaded via: twine/4.0.2 CPython/3.11.8</li> </ul> </div> <h3>File hashes</h3> <div> <table class="table table--hashes"> <caption class="sr-only">Hashes for httpbin-0.10.2-py2.py3-none-any.whl</caption> <thead> <tr> <th scope="col">Algorithm</th> <th scope="col">Hash digest</th> <th></th> </tr> </thead> <tbody> <tr data-controller="clipboard"> <th scope="row">SHA256</th> <td><code data-clipboard-target="source">8e28e67f72ead4419977c9f2dba4ce86ce08768ada30ef9a87288527bb925d00</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard"> Copy </button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">MD5</th> <td><code data-clipboard-target="source">6c5fbf1c2111ba2e3fe6e8c0cec5d34d</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard"> Copy </button> </td> </tr> <tr data-controller="clipboard"> <th scope="row">BLAKE2b-256</th> <td><code data-clipboard-target="source">1f2a12e12f8f07070cd12b46c60fd8fd709ff01414830213bfc5153ab527331f</code></td> <td class="table__align-right"> <button type="button" class="button button--small copy-tooltip copy-tooltip-w" data-action="clipboard#copy" data-clipboard-target="tooltip" data-clipboard-tooltip-value="Copy to clipboard"> Copy </button> </td> </tr> </tbody> </table> <p> <a href="https://pip.pypa.io/en/stable/topics/secure-installs/#hash-checking-mode" title="External link" target="_blank" rel="noopener">See more details on using hashes here.</a> </p> </div> </div> </div> </div> </div> </div> </main> <footer class="footer"> <div class="footer__logo"> <img src="/static/images/white-cube.2351a86c.svg" alt="" class="-js-white-cube"> </div> <div class="footer__menus"> <div class="footer__menu"> <h2>Help</h2> <nav aria-label="Help navigation"> <ul> <li><a href="https://packaging.python.org/tutorials/installing-packages/" title="External link" target="_blank" rel="noopener">Installing packages</a></li> <li><a href="https://packaging.python.org/tutorials/packaging-projects/" title="External link" target="_blank" rel="noopener">Uploading packages</a></li> <li><a href="https://packaging.python.org/" title="External link" target="_blank" rel="noopener">User guide</a></li> <li><a href="https://www.python.org/dev/peps/pep-0541/" title="External link" target="_blank" rel="noopener">Project name retention</a></li> <li><a href="/help/">FAQs</a></li> </ul> </nav> </div> <div class="footer__menu"> <h2>About PyPI</h2> <nav aria-label="About PyPI navigation"> <ul> <li><a href="https://blog.pypi.org" title="External link" target="_blank" rel="noopener">PyPI Blog</a></li> <li><a href="https://dtdg.co/pypi" title="External link" target="_blank" rel="noopener">Infrastructure dashboard</a></li> <li><a href="/stats/">Statistics</a></li> <li><a href="/trademarks/">Logos & trademarks</a></li> <li><a href="/sponsors/">Our sponsors</a></li> </ul> </nav> </div> <div class="footer__menu"> <h2>Contributing to PyPI</h2> <nav aria-label="How to contribute navigation"> <ul> <li><a href="/help/#feedback">Bugs and feedback</a></li> <li><a href="https://github.com/pypi/warehouse" title="External link" target="_blank" rel="noopener">Contribute on GitHub</a></li> <li><a href="https://hosted.weblate.org/projects/pypa/warehouse/" title="External link" target="_blank" rel="noopener">Translate PyPI</a></li> <li><a href="/sponsors/">Sponsor PyPI</a></li> <li><a href="https://github.com/pypi/warehouse/graphs/contributors" title="External link" target="_blank" rel="noopener">Development credits</a></li> </ul> </nav> </div> <div class="footer__menu"> <h2>Using PyPI</h2> <nav aria-label="Using PyPI navigation"> <ul> <li><a href="https://policies.python.org/pypi.org/Terms-of-Service/" title="External link" target="_blank" rel="noopener">Terms of Service</a></li> <li><a href="/security/">Report security issue</a></li> <li><a href="https://policies.python.org/python.org/code-of-conduct/" title="External link" target="_blank" rel="noopener">Code of conduct</a></li> <li><a href="https://policies.python.org/pypi.org/Privacy-Notice/" title="External link" target="_blank" rel="noopener">Privacy Notice</a></li> <li><a href="https://policies.python.org/pypi.org/Acceptable-Use-Policy/" title="External link" target="_blank" rel="noopener">Acceptable Use Policy</a></li> </ul> </nav> </div> </div> <hr class="footer__divider"> <div class="footer__text"> <p>Status:<a href="https://status.python.org/" title="External link" target="_blank" rel="noopener"> <span data-statuspage-domain="https://2p66nmmycsj3.statuspage.io">all systems operational</span></a> </p> <p> Developed and maintained by the Python community, for the Python community. <br> <a href="https://donate.pypi.org">Donate today!</a> </p> <p> "PyPI", "Python Package Index", and the blocks logos are registered <a href="/trademarks/">trademarks</a> of the <a href="https://www.python.org/psf-landing" target="_blank" rel="noopener">Python Software Foundation</a>.<br> </p> <p> © 2025 <a href="https://www.python.org/psf-landing/" title="External link" target="_blank" rel="noopener">Python Software Foundation</a><br> <a href="/sitemap/">Site map</a> </p> </div> <div class="centered hide-on-desktop"> <button type="button" class="button button--switch-to-desktop hidden" data-viewport-toggle-target="switchToDesktop" data-action="viewport-toggle#switchToDesktop"> Switch to desktop version </button> </div> </footer> <div class="language-switcher"> <form action="/locale/"> <ul> <li> <button class="language-switcher__selected" name="locale_id" value="en" type="submit" > English </button> </li> <li> <button name="locale_id" value="es" type="submit" > español </button> </li> <li> <button name="locale_id" value="fr" type="submit" > français </button> </li> <li> <button name="locale_id" value="ja" type="submit" > 日本語 </button> </li> <li> <button name="locale_id" value="pt_BR" type="submit" > português (Brasil) </button> </li> <li> <button name="locale_id" value="uk" type="submit" > українська </button> </li> <li> <button name="locale_id" value="el" type="submit" > Ελληνικά </button> </li> <li> <button name="locale_id" value="de" type="submit" > Deutsch </button> </li> <li> <button name="locale_id" value="zh_Hans" type="submit" > 中文 (简体) </button> </li> <li> <button name="locale_id" value="zh_Hant" type="submit" > 中文 (繁體) </button> </li> <li> <button name="locale_id" value="ru" type="submit" > русский </button> </li> <li> <button name="locale_id" value="he" type="submit" > עברית </button> </li> <li> <button name="locale_id" value="eo" type="submit" > Esperanto </button> </li> <li> <button name="locale_id" value="ko" type="submit" > 한국어 </button> </li> </ul> </form> </div> <div class="sponsors"> <p class="sponsors__title">Supported by</p> <div class="sponsors__divider"></div> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://aws.amazon.com/"> <img class=sponsors__image src="https://pypi-camo.freetls.fastly.net/ed7074cadad1a06f56bc520ad9bd3e00d0704c5b/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f6177732d77686974652d6c6f676f2d7443615473387a432e706e67" alt=AWS loading=lazy> <span class="sponsors__name">AWS</span> <span class="sponsors__service"> Cloud computing and Security Sponsor </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.datadoghq.com/"> <img class=sponsors__image src="https://pypi-camo.freetls.fastly.net/8855f7c063a3bdb5b0ce8d91bfc50cf851cc5c51/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f64617461646f672d77686974652d6c6f676f2d6668644c4e666c6f2e706e67" alt=Datadog loading=lazy> <span class="sponsors__name">Datadog</span> <span class="sponsors__service"> Monitoring </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.fastly.com/"> <img class=sponsors__image src="https://pypi-camo.freetls.fastly.net/df6fe8829cbff2d7f668d98571df1fd011f36192/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f666173746c792d77686974652d6c6f676f2d65684d3077735f6f2e706e67" alt=Fastly loading=lazy> <span class="sponsors__name">Fastly</span> <span class="sponsors__service"> CDN </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://careers.google.com/"> <img class=sponsors__image src="https://pypi-camo.freetls.fastly.net/420cc8cf360bac879e24c923b2f50ba7d1314fb0/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f676f6f676c652d77686974652d6c6f676f2d616734424e3774332e706e67" alt=Google loading=lazy> <span class="sponsors__name">Google</span> <span class="sponsors__service"> Download Analytics </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://www.pingdom.com/"> <img class=sponsors__image src="https://pypi-camo.freetls.fastly.net/d01053c02f3a626b73ffcb06b96367fdbbf9e230/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f70696e67646f6d2d77686974652d6c6f676f2d67355831547546362e706e67" alt=Pingdom loading=lazy> <span class="sponsors__name">Pingdom</span> <span class="sponsors__service"> Monitoring </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://getsentry.com/for/python"> <img class=sponsors__image src="https://pypi-camo.freetls.fastly.net/67af7117035e2345bacb5a82e9aa8b5b3e70701d/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f73656e7472792d77686974652d6c6f676f2d4a2d6b64742d706e2e706e67" alt=Sentry loading=lazy> <span class="sponsors__name">Sentry</span> <span class="sponsors__service"> Error logging </span> </a> <a class="sponsors__sponsor" target="_blank" rel="noopener" href="https://statuspage.io"> <img class=sponsors__image src="https://pypi-camo.freetls.fastly.net/b611884ff90435a0575dbab7d9b0d3e60f136466/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f737461747573706167652d77686974652d6c6f676f2d5467476c6a4a2d502e706e67" alt=StatusPage loading=lazy> <span class="sponsors__name">StatusPage</span> <span class="sponsors__service"> Status page </span> </a> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10