https://pypi.org/

Submitted URL:
https://pypi.org/
Report Finished:

The outgoing links identified from the page

LinkText
https://survey.alchemer.com/s3/8009809/python-developers-survey-2024Take the 2024 survey
https://packaging.python.org/tutorials/installing-packages/Learn about installing packages
https://packaging.python.org/tutorials/packaging-projects/Uploading packages
https://packaging.python.org/User guide
https://www.python.org/dev/peps/pep-0541/Project name retention
https://dtdg.co/pypiInfrastructure dashboard
https://github.com/pypi/warehouseContribute on GitHub
https://hosted.weblate.org/projects/pypa/warehouse/Translate PyPI
https://github.com/pypi/warehouse/graphs/contributorsDevelopment credits
https://policies.python.org/python.org/code-of-conduct/Code of conduct

JavaScript Variables · 14 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

NameType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
dataLayerobject
ethicaladsobject
google_tag_managerobject
google_tag_dataobject
_WarehouseHTMLIncludedboolean
GoogleAnalyticsObjectstring
gafunction

Console log messages · 10 found

Messages logged to the web console

TypeCategoryLog
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'publickey-credentials-create'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'ambient-light-sensor'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'battery'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'document-domain'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'execution-while-not-rendered'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'execution-while-out-of-viewport'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'speaker-selection'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'usb'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'web-share'.
warningother
Text
Error with Permissions-Policy header: Unrecognized feature: 'xr-spatial-tracking'.

HTML

The raw HTML body of the page

<!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">


    <title>PyPI · The Python Package Index</title>
    <meta name="description" content="The Python Package Index (PyPI) is a repository of software for the Python programming language.">

    <link rel="stylesheet" href="/static/css/warehouse-ltr.5715db28.css">
    <link rel="stylesheet" href="/static/css/fontawesome.da0464c1.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">

    <meta property="og:url" content="https://pypi.org/">
    <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="">
    <meta property="og:description" content="The Python Package Index (PyPI) is a repository of software for the Python programming language.">

    <link rel="search" type="application/opensearchdescription+xml" title="PyPI" href="/opensearch.xml">

    <script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-B0F3Y2XW9M&amp;l=dataLayer&amp;cx=c"></script><script async="" data-ga-id="UA-55961911-1" data-ga4-id="G-RW7D75DF8V" src="/static/js/warehouse.f780b8ef.js">
    </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&amp;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>

  <style>[data-ea-publisher].loaded,[data-ea-type].loaded{font-size:14px;font-family:-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;font-weight:normal;font-style:normal;leter-spacing:0px;vertical-align:baseline;line-height:1.3em}[data-ea-publisher].loaded a,[data-ea-type].loaded a{text-decoration:none}[data-ea-publisher].loaded .ea-pixel,[data-ea-type].loaded .ea-pixel{display:none}[data-ea-publisher].loaded .ea-content,[data-ea-type].loaded .ea-content{margin:1em 1em 0.5em 1em;padding:1em;background:rgba(0,0,0,0.03);color:#505050}[data-ea-publisher].loaded .ea-content a:link,[data-ea-type].loaded .ea-content a:link{color:#505050}[data-ea-publisher].loaded .ea-content a:visited,[data-ea-type].loaded .ea-content a:visited{color:#505050}[data-ea-publisher].loaded .ea-content a:hover,[data-ea-type].loaded .ea-content a:hover{color:#373737}[data-ea-publisher].loaded .ea-content a:active,[data-ea-type].loaded .ea-content a:active{color:#373737}[data-ea-publisher].loaded .ea-content a strong,[data-ea-publisher].loaded .ea-content a b,[data-ea-type].loaded .ea-content a strong,[data-ea-type].loaded .ea-content a b{color:#088cdb}[data-ea-publisher].loaded .ea-callout a:link,[data-ea-type].loaded .ea-callout a:link{color:#6a6a6a}[data-ea-publisher].loaded .ea-callout a:visited,[data-ea-type].loaded .ea-callout a:visited{color:#6a6a6a}[data-ea-publisher].loaded .ea-callout a:hover,[data-ea-type].loaded .ea-callout a:hover{color:#505050}[data-ea-publisher].loaded .ea-callout a:active,[data-ea-type].loaded .ea-callout a:active{color:#505050}[data-ea-publisher].loaded .ea-callout a strong,[data-ea-publisher].loaded .ea-callout a b,[data-ea-type].loaded .ea-callout a strong,[data-ea-type].loaded .ea-callout a b{color:#088cdb}[data-ea-publisher].loaded .ea-callout a,[data-ea-type].loaded .ea-callout a{font-size:0.8em}[data-ea-publisher].loaded.dark .ea-content,[data-ea-type].loaded.dark .ea-content{background:rgba(255,255,255,0.05);color:#dcdcdc}[data-ea-publisher].loaded.dark .ea-content a:link,[data-ea-type].loaded.dark .ea-content a:link{color:#dcdcdc}[data-ea-publisher].loaded.dark .ea-content a:visited,[data-ea-type].loaded.dark .ea-content a:visited{color:#dcdcdc}[data-ea-publisher].loaded.dark .ea-content a:hover,[data-ea-type].loaded.dark .ea-content a:hover{color:#f6f6f6}[data-ea-publisher].loaded.dark .ea-content a:active,[data-ea-type].loaded.dark .ea-content a:active{color:#f6f6f6}[data-ea-publisher].loaded.dark .ea-content a strong,[data-ea-publisher].loaded.dark .ea-content a b,[data-ea-type].loaded.dark .ea-content a strong,[data-ea-type].loaded.dark .ea-content a b{color:#50baf9}[data-ea-publisher].loaded.dark .ea-callout a:link,[data-ea-type].loaded.dark .ea-callout a:link{color:#c3c3c3}[data-ea-publisher].loaded.dark .ea-callout a:visited,[data-ea-type].loaded.dark .ea-callout a:visited{color:#c3c3c3}[data-ea-publisher].loaded.dark .ea-callout a:hover,[data-ea-type].loaded.dark .ea-callout a:hover{color:#dcdcdc}[data-ea-publisher].loaded.dark .ea-callout a:active,[data-ea-type].loaded.dark .ea-callout a:active{color:#dcdcdc}[data-ea-publisher].loaded.dark .ea-callout a strong,[data-ea-publisher].loaded.dark .ea-callout a b,[data-ea-type].loaded.dark .ea-callout a strong,[data-ea-type].loaded.dark .ea-callout a b{color:#50baf9}@media (prefers-color-scheme: dark){[data-ea-publisher].loaded.adaptive .ea-content,[data-ea-type].loaded.adaptive .ea-content{background:rgba(255,255,255,0.05);color:#dcdcdc}[data-ea-publisher].loaded.adaptive .ea-content a:link,[data-ea-type].loaded.adaptive .ea-content a:link{color:#dcdcdc}[data-ea-publisher].loaded.adaptive .ea-content a:visited,[data-ea-type].loaded.adaptive .ea-content a:visited{color:#dcdcdc}[data-ea-publisher].loaded.adaptive .ea-content a:hover,[data-ea-type].loaded.adaptive .ea-content a:hover{color:#f6f6f6}[data-ea-publisher].loaded.adaptive .ea-content a:active,[data-ea-type].loaded.adaptive .ea-content a:active{color:#f6f6f6}[data-ea-publisher].loaded.adaptive .ea-content a strong,[data-ea-publisher].loaded.adaptive .ea-content a b,[data-ea-type].loaded.adaptive .ea-content a strong,[data-ea-type].loaded.adaptive .ea-content a b{color:#50baf9}[data-ea-publisher].loaded.adaptive .ea-callout a:link,[data-ea-type].loaded.adaptive .ea-callout a:link{color:#c3c3c3}[data-ea-publisher].loaded.adaptive .ea-callout a:visited,[data-ea-type].loaded.adaptive .ea-callout a:visited{color:#c3c3c3}[data-ea-publisher].loaded.adaptive .ea-callout a:hover,[data-ea-type].loaded.adaptive .ea-callout a:hover{color:#dcdcdc}[data-ea-publisher].loaded.adaptive .ea-callout a:active,[data-ea-type].loaded.adaptive .ea-callout a:active{color:#dcdcdc}[data-ea-publisher].loaded.adaptive .ea-callout a strong,[data-ea-publisher].loaded.adaptive .ea-callout a b,[data-ea-type].loaded.adaptive .ea-callout a strong,[data-ea-type].loaded.adaptive .ea-callout a b{color:#50baf9}}[data-ea-publisher].loaded .ea-content,[data-ea-type].loaded .ea-content{border:0px;border-radius:3px;box-shadow:0px 2px 3px rgba(0,0,0,0.15)}[data-ea-publisher].loaded.raised .ea-content,[data-ea-type].loaded.raised .ea-content{border:0px;border-radius:3px;box-shadow:0px 2px 3px rgba(0,0,0,0.15)}[data-ea-publisher].loaded.bordered .ea-content,[data-ea-type].loaded.bordered .ea-content{border:1px solid rgba(0,0,0,0.04);border-radius:3px;box-shadow:none}[data-ea-publisher].loaded.bordered.dark .ea-content,[data-ea-type].loaded.bordered.dark .ea-content{border:1px solid rgba(255,255,255,0.07)}@media (prefers-color-scheme: dark){[data-ea-publisher].loaded.bordered.adaptive .ea-content,[data-ea-type].loaded.bordered.adaptive .ea-content{border:1px solid rgba(255,255,255,0.07)}}[data-ea-publisher].loaded.flat .ea-content,[data-ea-type].loaded.flat .ea-content{border:0px;border-radius:3px;box-shadow:none}[data-ea-type="image"].loaded,[data-ea-publisher]:not([data-ea-type]).loaded,.ea-type-image{display:inline-block}[data-ea-type="image"].loaded .ea-content,[data-ea-publisher]:not([data-ea-type]).loaded .ea-content,.ea-type-image .ea-content{max-width:180px;overflow:auto;text-align:center}[data-ea-type="image"].loaded .ea-content>a>img,[data-ea-publisher]:not([data-ea-type]).loaded .ea-content>a>img,.ea-type-image .ea-content>a>img{width:120px;height:90px;display:inline-block}[data-ea-type="image"].loaded .ea-content>.ea-text,[data-ea-publisher]:not([data-ea-type]).loaded .ea-content>.ea-text,.ea-type-image .ea-content>.ea-text{margin-top:1em;font-size:1em;text-align:center}[data-ea-type="image"].loaded .ea-callout,[data-ea-publisher]:not([data-ea-type]).loaded .ea-callout,.ea-type-image .ea-callout{max-width:180px;margin:0em 1em 1em 1em;padding-left:1em;padding-right:1em;font-style:italic;text-align:right}[data-ea-type="image"].loaded.horizontal .ea-content,[data-ea-publisher]:not([data-ea-type]).loaded.horizontal .ea-content,.ea-type-image.horizontal .ea-content{max-width:320px}[data-ea-type="image"].loaded.horizontal .ea-content>a>img,[data-ea-publisher]:not([data-ea-type]).loaded.horizontal .ea-content>a>img,.ea-type-image.horizontal .ea-content>a>img{float:left;margin-right:1em}[data-ea-type="image"].loaded.horizontal .ea-content .ea-text,[data-ea-publisher]:not([data-ea-type]).loaded.horizontal .ea-content .ea-text,.ea-type-image.horizontal .ea-content .ea-text{margin-top:0em;text-align:left;overflow:auto}[data-ea-type="image"].loaded.horizontal .ea-callout,[data-ea-publisher]:not([data-ea-type]).loaded.horizontal .ea-callout,.ea-type-image.horizontal .ea-callout{max-width:320px;text-align:right}[data-ea-type="text"].loaded,.ea-type-text{font-size:14px}[data-ea-type="text"].loaded .ea-content,.ea-type-text .ea-content{text-align:left}[data-ea-type="text"].loaded .ea-callout,.ea-type-text .ea-callout{margin:0.5em 1em 1em 1em;padding-left:1em;padding-right:1em;text-align:right;font-style:italic}[data-ea-style="stickybox"].loaded .ea-type-image{z-index:1000;position:fixed;bottom:20px;right:20px}[data-ea-style="stickybox"].loaded .ea-type-image .ea-stickybox-hide{cursor:pointer;position:absolute;top:0.75em;right:0.75em;background-color:#fefefe;border:1px solid #088cdb;border-radius:50%;color:#088cdb;font-size:1em;text-align:center;height:1.5em;width:1.5em;line-height:1.5em}@media (max-width: 1300px){[data-ea-style="stickybox"].loaded .ea-type-image{position:static;bottom:0;right:0;margin:auto;text-align:center}[data-ea-style="stickybox"].loaded .ea-type-image .ea-stickybox-hide{display:none}}@media (min-width: 1301px){[data-ea-style="stickybox"].loaded .ea-type-image .ea-content{background:#dcdcdc}[data-ea-style="stickybox"].loaded.dark .ea-type-image .ea-content{background:#505050}}@media (min-width: 1301px) and (prefers-color-scheme: dark){[data-ea-style="stickybox"].loaded.adaptive .ea-type-image .ea-content{background:#505050}}
</style></head>

  <body data-controller="viewport-toggle" class="with-sticky" style="padding-top: 87px;">

    <!-- 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/notification-banners/"><div class="notification-bar notification-bar--banner notification-bar--dismissable notification-bar--visible" data-controller="notification" data-notification-target="notification" id="10528dc5-8fd5-49c1-98db-7205e1b86239">
  <span class="notification-bar__icon">
    <i class="fa fa-clipboard-list fa-lg" aria-hidden="true"></i>
  </span>
  <span class="notification-bar__message">
    Join the official Python Developers Survey 2024 and have a chance to win a prize!&nbsp;
    <a href="https://survey.alchemer.com/s3/8009809/python-developers-survey-2024" class="button button--dark button--small button--primary" target="_blank" rel="noopener">Take the 2024 survey</a>
  </span>
  <button type="button" title="Dismiss this notification" data-notification-target="dismissButton" data-action="click->notification#dismiss" class="notification-bar__dismiss" aria-label="Close"><i class="fa fa-times" aria-hidden="true"></i></button>
</div>
</div>    </div>

<div data-html-include="/_includes/flash-messages/">


</div>

<div data-html-include="/_includes/session-notifications/"></div>
    <header class="site-header ">
      <div class="site-container">
        <div class="split-layout">
<div>
  <a class="site-header__logo" href="/">
    <img alt="PyPI" src="/static/images/logo-small.8998e9d1.svg">
  </a>
</div>

<div data-html-include="/_includes/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" data-dropdown-bound="true">
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>


    <main id="content">


<div class="banner">
  <div class="homepage-banner">
    <h1 class="homepage-banner__title">Find, install and publish Python packages with the Python Package Index</h1>

    <form class="search-form search-form--large search-form--fullwidth" action="/search/" role="search">
      <label for="search" class="sr-only">Search PyPI</label>

      <!-- The following input is intentionally not autofocused, see https://github.com/pypi/warehouse/issues/6088 for more details -->
      <input id="search" class="search-form__search large-input" type="text" name="q" placeholder="Search projects" 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>

    <p class="homepage-banner__browse">Or <a href="/search/">browse projects</a></p>
  </div>
</div>

<div class="horizontal-section horizontal-section--grey horizontal-section--thin horizontal-section--statistics">
  <div class="statistics-bar">
    <p class="statistics-bar__statistic">
575,337 projects    </p>
    <p class="statistics-bar__statistic">
6,164,734 releases    </p>
    <p class="statistics-bar__statistic">
12,230,060 files    </p>
    <p class="statistics-bar__statistic">
863,800 users    </p>
  </div>
</div>

<div class="horizontal-section">
  <div class="about-pypi">
    <div class="about-pypi__logo">
      <img alt="" src="/static/images/logo-large.516e776d.svg" loading="lazy">
    </div>
    <div class="about-pypi__text">
      <p class="lede-paragraph">The Python Package Index (PyPI) is a repository of software for the Python programming language.</p>
      <p>
PyPI helps you find and install software developed and shared by the Python community.        <a href="https://packaging.python.org/tutorials/installing-packages/" title="External link" target="_blank" rel="noopener">Learn about installing packages</a>.
      </p>
      <p>
Package authors use PyPI to distribute their software.        <a href="https://packaging.python.org/tutorials/packaging-projects/" title="External link" target="_blank" rel="noopener">Learn how to package your Python code for PyPI</a>.
      </p>
    </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 &amp; 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/python.org/code-of-conduct/" title="External link" target="_blank" rel="noopener">Code of conduct</a></li>
              <li><a href="/security/">Report security issue</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/Terms-of-Use/" title="External link" target="_blank" rel="noopener">Terms of Use</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>
          © 2024 <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" 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>
        </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.python.org/psf/sponsors/#microsoft">
          <img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/524d1ce72f7772294ca4c1fe05d21dec8fa3f8ea/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f6d6963726f736f66742d77686974652d6c6f676f2d5a443172685444462e706e67" alt="Microsoft" loading="lazy">
          <span class="sponsors__name">Microsoft</span>
          <span class="sponsors__service">
            PSF Sponsor
          </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>