https://pypi.org/

ID de l'analyse :
5836b03d-1153-4a98-88aa-a5763fb06accTerminée
URL soumise :
https://pypi.org/
Fin du rapport :

Liens : 21 trouvé(s)

Liens sortants identifiés à partir de la page

Lientexte
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

Variables JavaScript : 15 trouvée(s)

Les variables JavaScript globales chargées dans l'objet fenêtre d'une page sont des variables déclarées en dehors des fonctions et accessibles depuis n'importe quel endroit du code au sein du champ d'application actuel

NomType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
dataLayerobject
ethicaladsobject
FASTLYobject
google_tag_managerobject
google_tag_dataobject
GoogleAnalyticsObjectstring
gafunction

Messages de journal de console : 10 trouvé(s)

Messages consignés dans la console web

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

HTML

Le corps HTML de la page en données brutes

<!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" style="padding-top: 87px;" class="with-sticky">

    <!-- 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">
578,322 projects    </p>
    <p class="statistics-bar__statistic">
6,204,203 releases    </p>
    <p class="statistics-bar__statistic">
12,340,522 files    </p>
    <p class="statistics-bar__statistic">
867,204 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>