The Python Package Index (PyPI) tracks the downloaded packages. I’ve checked the monthly statistics for the two time frames:
- 1st of June to 30th of June and
- 1st of July to 31st of July
and compared them.
It’s important to realize that download statistics do not tell you anything about the code quality and only give a small indication of popularity. The download statistics get pushed if people regularly download packages through their Continuous Integration (CI) systems for testing their own software. Being a dependency of a popular package certainly helps. And just being an indirect dependency by many packages is typically also not exciting. There is a reason why requests and boto3 are typically in the TOP-10.
Top Newcomers
In the following, I tried to group packages if multiple newcomers are just the cause of another change.
- № 134, downloaded 30232921x: jsonschema-specifications. That pulled rpds-py and referencing up as well. And the reason it came up that quickly is because the jsonschema package was popular before. Those became a dependency in February, but only in July were the releases. Yes, multiple releases.
- № 307, downloaded 12068823x: annotated-types — PEP-593 added
typing.Annotated. Python is improved by “Python Enhancement Proposals” — short: PEPs. This package makes a PEP that was introduced in Python 3.9 usable for normal users. That is exciting 😍 - № 1253, downloaded 1392567x: google-re2, a drop-in replacement for the re module. It’s been on version 1.0 in 2020 already. I don’t know why it suddenly got such a boost in downloads. Likely because something from the Google Cloud packages now depends on it.
- № 1539, downloaded 912974x: wexpect, a Windows variant of pexpect. A module for spawning child applications. This one is even more confusing. It’s hardly a newcomer. I’m also not aware of any big packages now depending on it.
- № 1921, downloaded 582748x: LangSmith, a Python client for interacting with the LangSmith platform. LangChain is a tool for LLMs. You know, the ChatGPT hype.
- № 2147, downloaded 467417x: itables, Turn your Python DataFrames into Interactive Tables
- № 2212, downloaded 443474x: uproot3, is a reader and a writer of the ROOT file format.
- № 2220, downloaded 440534x: awkward0 a pure Python+Numpy library for manipulating complex data structures as you would Numpy arrays
- № 2240, downloaded 432486x: coffea is a package for the typical needs of a high-energy collider physics (HEP) experiment analysis
- № 2247, downloaded 429644x: boost-histogram — Python bindings for Boost::Histogram.
Top Trending
- +4082, current rank is 282: pydantic-core — the data validation library pydantic released a 2.0 version which had heavy refactoring and tons of news / podcasts around it. pydantic is used by FastAPI and many other projects. If you don’t know it, it’s somewhat similar to attrs.
- +2508, current rank is 2089: awkward is a library for nested, variable-sized data. It’s in the scikit-hep project.
- +2216, current rank is 637: imdbpy and cinemagoer. A Python package useful to retrieve and manage the data of the IMDb movie database about movies, people, characters and companies.
- +2095, current rank is 1220: logutils — handlers for the Python standard library’s logging package.
- +2045, current rank is 2819: types-pyserial, the type stubs for pyserial, a Python Serial Port Extension.
- +1737, current rank is 3092: pyobjc-framework-* there are tons of libraries around macOS stuff.
- +1714, current rank is 3237: yapsy is a library implementing the core mechanisms needed to build a plugin system into a wider application
- +1664, current rank is 2168: aiofile — Real asynchronous file operations with asyncio support.
- +1614, current rank is 452: jupyter-lsp — Multi-Language Server WebSocket proxy for your Jupyter
- +1603, current rank is 2494: rainbow-logging-handler
I feel like the next time I do this, I need to (1) remove all packages from well-known organizations (2) remove packages on which other popular packages started to depend (3) remove packages which are dependencies of trending newcomers.
Falling Fast
Packages in this category might need support. If you want to become a maintainer, here might be your chance :-)
- -3338, current rank is 4255: python-whois — produce parsed WHOIS data for a given domain
- -2547, current rank is 4963: haralyzer — Using HAR Files To Analyze Web Pages.
- -2489, current rank is 4907: eyes-selenium
- -2135, current rank is 4492: browsermob-proxy
- -1881, current rank is 4704: ssh-python — Bindings for libssh C library
- -1687, current rank is 4227: transparentpath use a GCS file system path as if it was local. GCS is Google Cloud Storage.
- -1680, current rank is 3938: robotframework-debuglibrary
- -1660, current rank is 4759: mozrunner (also mozlog), a supplemental standard library for Mozilla
- -1461, current rank is 3612: robotremoteserver
- -1426, current rank is 4841: openpyxl-stubs is actually one of my libraries 😅 I haven’t taken care of it as I lost interest. I hope the library adds type annotations on their own.
Bonus: A small PDF update
I care about the PDF ecosystem, so here is how the packages developed:
pypdf family:
- pypdf: +163, rank now is 1481 🎉 Maybe we make this pass PyPDF2 this year 🤞
- pypdf2: -31, rank now is 771. The decline is expected in favor of pypdf.
- pypdf3: +168, rank now is 4291. I don’t get why people continue to use that.
Text extraction / manipulation:
- pdfminer-six: -49, rank now is 970
- pdfminer: -133, rank now is 3508
- pdfplumber: -14, rank now is 2525
- pymupdf: +154, rank now is 1658. Well-deserved, it’s an excellent library.
- pikepdf: -154, rank now is 1970. Also a pretty good library
- pdfrw: -297, rank now is 3689
Generators:
- reportlab: -33, rank now is 886
- fpdf: -121, rank now is 1527
- fpdf2: -308, rank now is 3294 — oh no 😨 People should go to fpdf2. I wonder what they are using now
- weasyprint: -123, rank now is 1595
- xhtml2pdf: -68, rank now is 2170
Others:
- pdf2image: +19, rank now is 1697
- pdfkit: -54, rank now is 1705
- pyhanko: +117, rank now is 2396. Signing of PDFs.
- tabula-py: -95, rank now is 3303
- camelot-py: -49, rank now is 4078
- img2pdf: -716, rank now is 3457
- sphinxcontrib-svg2pdfconverter: -397, rank now is 4146
- pypdftk: -1332, rank now is 4621
You can get more insights in
The Python PDF Ecosystem in 2023 Which libraries should you use for which use case?