| From: <Saved by Blink>
|
| Snapshot-Content-Location: https://pypi.org/
|
| Subject: =?utf-8?Q?PyPI=20=C2=B7=20The=20Python=20Package=20Index?=
|
| Date: Sun, 31 May 2026 04:23:33 +0800
|
| MIME-Version: 1.0
|
| Content-Type: multipart/related;
|
| type="text/html";
|
| boundary="----MultipartBoundary--cUyvbLf8ysVgvDxHuzw8lJLXjVc7Q2yGlsTaTF8ft3----"
|
|
|
|
|
| ------MultipartBoundary--cUyvbLf8ysVgvDxHuzw8lJLXjVc7Q2yGlsTaTF8ft3----
|
| Content-Type: text/html
|
| Content-ID: <frame-C726B2218AD998C655C341F25AD723A1@mhtml.blink>
|
| Content-Transfer-Encoding: binary
|
| Content-Location: https://pypi.org/
|
|
|
| <!DOCTYPE html><html lang="en" dir="ltr"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="cid:css-c3f9c8a1-efae-46da-a181-bf11119a271e@mhtml.blink" /> |
| |
| <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>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="https://pypi.org/static/css/warehouse-ltr.0f58843e.css"> |
| <link rel="stylesheet" href="https://pypi.org/static/css/fontawesome.379f9724.css"> |
| <link rel="stylesheet" href="https://pypi.org/static/css/fonts.3b5d1a1c.css"> |
| |
| <link rel="icon" href="https://pypi.org/static/images/favicon.35549fe8.ico" type="image/x-icon"> |
| <link rel="alternate" type="application/rss+xml" title="RSS: 40 latest updates" href="https://pypi.org/rss/updates.xml"> |
| <link rel="alternate" type="application/rss+xml" title="RSS: 40 newest packages" href="https://pypi.org/rss/packages.xml"> |
| <link rel="canonical" href="https://pypi.org/"> |
| <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."> |
| <meta name="source-commit" content="0b30ecbbe5bdf43854c7135f43b1be88b12f0a8b"> <link rel="search" type="application/opensearchdescription+xml" title="PyPI" href="https://pypi.org/opensearch.xml"> |
| |
| |
| |
| </head> |
| <body data-controller="viewport-toggle" style="padding-top: 320px;" class="with-sticky"> |
| |
| <a href="https://pypi.org/#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"> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <div data-html-include="/_includes/unauthed/notification-banners/"> <div class="notification-bar notification-bar--banner notification-bar--dismissable notification-bar--visible" data-controller="notification" data-notification-target="notification" id="39eac3d2-e12d-417a-87a2-11d1ad7c2346"> |
| <span class="notification-bar__icon"> |
| <i class="fa fa-inbox" aria-hidden="true"></i> |
| </span> |
| <span class="notification-bar__message"> |
| We’re redesigning PyPI project pages — share your feedback |
| <a href="https://www.surveymonkey.com/r/VK5KNXR" class="button button--dark button--small button--primary" target="_blank" rel="noopener">Take 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/unauthed/flash-messages/"></div><div data-html-include="/_includes/authed/session-notifications/"> <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"> |
| Your primary email address (Pathum2583@gmail.com) is unverified. <a href="https://pypi.org/manage/account/#account-emails"> |
| Verify your email or add a new address. </a> |
| </span> |
| </div> |
| </div><header class="site-header "> |
| <div class="site-container"> |
| <div class="split-layout"> |
| <div> |
| <a class="site-header__logo" href="https://pypi.org/"> |
| <img alt="PyPI" src="https://pypi.org/static/images/logo-small.8998e9d1.svg"> |
| </a> |
| </div> |
| <div data-html-include="/_includes/authed/current-user-indicator/"> <div id="user-indicator" class="horizontal-menu horizontal-menu--light horizontal-menu--tall"> |
| <nav aria-label="Main navigation" class="dropdown dropdown--on-menu dropdown--with-icons"> |
| <button type="button" class="horizontal-menu__link--with-icon horizontal-menu__link dropdown__trigger" aria-haspopup="true" aria-expanded="false" aria-label="View menu" data-dropdown-bound="true"> |
| <img class="user-image" src="https://pypi-camo.freetls.fastly.net/8768f6bb6a5c29444cdeb0db57a62ac52a2987e6/68747470733a2f2f7365637572652e67726176617461722e636f6d2f6176617461722f62303935383064643830633339343366376638643430376161303565373139363f73697a653d3430" alt="User Image"> |
| pathuml |
| <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 href="https://pypi.org/manage/projects/" class="dropdown__link"> |
| <i class="fa fa-cubes" aria-hidden="true"></i> |
| Your projects </a> |
| </li> |
| <li> |
| <a href="https://pypi.org/manage/organizations/" class="dropdown__link"> |
| <i class="fa fa-sitemap" aria-hidden="true"></i> |
| Your organizations </a> |
| </li> |
| <li> |
| <a href="https://pypi.org/manage/account/" class="dropdown__link"> |
| <i class="fa fa-cog" aria-hidden="true"></i> |
| Account settings </a> |
| </li> |
| <li> |
| <a href="https://pypi.org/user/pathuml/" class="dropdown__link"> |
| <i class="fa fa-user-circle" aria-hidden="true"></i> |
| Public profile </a> |
| </li> |
| <li> |
| <a href="https://pypi.org/help/" class="dropdown__link"> |
| <i class="fa fa-question-circle" aria-hidden="true"></i> |
| Help </a> |
| </li> |
| <li> |
| <a href="https://pypi.org/sponsors/" class="dropdown__link"> |
| <i class="fa fa-heart" aria-hidden="true"></i> |
| Sponsors </a> |
| </li> |
| <li> |
| <form method="post" action="https://pypi.org/account/logout/"> |
| |
| <button type="submit" class="dropdown__link"> |
| <i class="fa fa-sign-out-alt" aria-hidden="true"></i> |
| Log out </button> |
| </form> |
| </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="https://pypi.org/search/" role="search"> |
| <label for="search" class="sr-only">Search PyPI</label> |
| |
| <input id="search" class="search-form__search large-input" type="text" name="q" placeholder="Type '/' to 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="https://pypi.org/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"> |
| 819,799 projects </p> |
| <p class="statistics-bar__statistic"> |
| 8,796,708 releases </p> |
| <p class="statistics-bar__statistic"> |
| 19,172,455 files</p> |
| <p class="statistics-bar__statistic"> |
| 1,064,132 users</p> |
| </div> |
| </div> |
| <div class="horizontal-section"> |
| <div class="about-pypi"> |
| <div class="about-pypi__logo"> |
| <img alt="" src="https://pypi.org/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="https://pypi.org/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="https://pypi.org/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="https://pypi.org/stats/">Statistics</a> |
| </li> |
| <li> |
| <a href="https://pypi.org/trademarks/">Logos & trademarks</a> |
| </li> |
| <li> |
| <a href="https://pypi.org/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="https://pypi.org/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="https://pypi.org/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="https://pypi.org/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="https://pypi.org/trademarks/">trademarks</a> of the <a href="https://www.python.org/psf-landing" target="_blank" rel="noopener">Python Software Foundation</a>. |
| <br> |
| </p> |
| <p> |
| © 2026 <a href="https://www.python.org/psf-landing/" title="External link" target="_blank" rel="noopener">Python Software Foundation</a> |
| <br> |
| <a href="https://pypi.org/sitemap/">Site map</a> |
| </p> |
| <p> |
| Deployed from <a href="https://github.com/pypi/warehouse/commit/0b30ecbbe5bdf43854c7135f43b1be88b12f0a8b" title="External link" target="_blank" rel="noopener"><code>0b30ecb</code></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="https://pypi.org/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="" 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="" 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://depot.dev/"> |
| <img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/60f709d24f3e4d469f9adc77c65e2f5291a3d165/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f6465706f742d77686974652d6c6f676f2d7038506f476831302e706e67" alt="" loading="lazy"> |
| <span class="sponsors__name">Depot</span> |
| <span class="sponsors__service"> |
| Continuous Integration |
| </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="" 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="" 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="" 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://sentry.io/for/python/?utm_source=pypi&utm_medium=paid-community&utm_campaign=python-na-evergreen&utm_content=static-ad-pypi-sponsor-learnmore"> |
| <img class="sponsors__image" src="https://pypi-camo.freetls.fastly.net/67af7117035e2345bacb5a82e9aa8b5b3e70701d/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f73656e7472792d77686974652d6c6f676f2d4a2d6b64742d706e2e706e67" alt="" 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="" loading="lazy"> |
| <span class="sponsors__name">StatusPage</span> |
| <span class="sponsors__service"> |
| Status page |
| </span> |
| </a> |
| </div> |
| </body></html>
|
| ------MultipartBoundary--cUyvbLf8ysVgvDxHuzw8lJLXjVc7Q2yGlsTaTF8ft3----
|
| Content-Type: image/png
|
| Content-Transfer-Encoding: binary
|
| Content-Location: https://pypi-camo.freetls.fastly.net/b611884ff90435a0575dbab7d9b0d3e60f136466/68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f707970692d6173736574732f73706f6e736f726c6f676f732f737461747573706167652d77686974652d6c6f676f2d5467476c6a4a2d502e706e67
|
|
|
| �PNG
|
| |
| |