Python 3.9 Readiness

Python 3.9 support graph for the 360 most popular Python packages!

What is this about?

Python 3.9 is a currently supported version of Python. This site shows Python 3.9 support for the 360 most downloaded packages on PyPI:

  1. 292 green packages (81.1%) support Python 3.9;
  2. 68 white packages (18.9%) don't explicitly support Python 3.9 yet.

Package 'x' is white. What can I do?

There can be many reasons a package is not explicitly supporting Python 3.9:

  • If you are package maintainer, it's time to start supporting Python 3.9. If you are not able to give the time needed, please seek for help from the community.

  • If you are user of the package, send a friendly note to the package maintainer. Or fork it, and send a pull request to help move the project towards Python 3.9 support, by adding the classifier and ensuring the project is tested against Python 3.9.

How do you identify Python 3.9 support?

We look for the Programming Language :: Python :: 3.9 classifier on the latest release of the project, via PyPI's JSON API.

Top 120

boto3 ✓ botocore ✓ urllib3 ✓ requests ✓ setuptools ✗ certifi ✓ idna ✓ charset-normalizer ✓ packaging ✓ typing-extensions ✓ python-dateutil ✓ aiobotocore ✓ grpcio-status ✓ s3transfer ✓ six ✗ pyyaml ✓ fsspec ✓ numpy ✗ s3fs ✓ wheel ✓ cryptography ✓ pip ✓ pydantic ✓ google-api-core ✓ pandas ✓ cffi ✓ attrs ✓ awscli ✓ importlib-metadata ✗ pycparser ✓ rsa ✓ jmespath ✓ pyasn1 ✓ click ✗ zipp ✗ protobuf ✓ rich ✓ markupsafe ✗ pytz ✓ platformdirs ✓ jinja2 ✗ colorama ✓ aiohttp ✓ tomli ✗ pyjwt ✓ pydantic-core ✓ pytest ✓ pluggy ✓ virtualenv ✓ jsonschema ✓ googleapis-common-protos ✓ google-auth ✓ filelock ✓ cachetools ✓ pyarrow ✓ wrapt ✓ sqlalchemy ✓ docutils ✓ pyasn1-modules ✓ pygments ✓ annotated-types ✓ greenlet ✓ requests-oauthlib ✓ yarl ✓ requests-toolbelt ✓ iniconfig ✓ tzdata ✗ psutil ✗ pyparsing ✓ multidict ✓ werkzeug ✗ exceptiongroup ✗ soupsieve ✓ oauthlib ✓ beautifulsoup4 ✗ frozenlist ✓ aiosignal ✓ distlib ✓ grpcio ✓ more-itertools ✓ async-timeout ✗ isodate ✓ tomlkit ✓ scipy ✗ tqdm ✓ pillow ✓ pathspec ✓ deprecated ✓ decorator ✓ anyio ✓ sortedcontainers ✗ openpyxl ✓ markdown-it-py ✓ httpx ✓ et-xmlfile ✓ pyopenssl ✓ flask ✗ sniffio ✗ rpds-py ✓ proto-plus ✓ h11 ✓ coverage ✓ httpcore ✓ jsonschema-specifications ✓ lxml ✓ mypy-extensions ✓ dill ✓ mdurl ✓ python-dotenv ✓ propcache ✓ azure-core ✓ google-cloud-storage ✓ referencing ✓ gitpython ✓ asn1crypto ✓ msgpack ✓ tenacity ✓ pexpect ✗ pynacl ✓ aiohappyeyeballs ✓

Top 120 - 240

ptyprocess ✗ msal ✓ asgiref ✓ websocket-client ✓ itsdangerous ✗ poetry-core ✓ google-cloud-core ✓ opentelemetry-sdk ✓ alembic ✓ psycopg2-binary ✓ gitdb ✓ smmap ✓ keyring ✗ google-resumable-media ✓ importlib-resources ✗ trove-classifiers ✗ scikit-learn ✓ pycodestyle ✗ snowflake-connector-python ✓ regex ✓ blinker ✗ fastapi ✓ opentelemetry-api ✓ bcrypt ✓ wcwidth ✓ shellingham ✓ jaraco-classes ✗ chardet ✓ pkginfo ✓ backoff ✓ jeepney ✗ secretstorage ✓ ruamel-yaml ✓ google-crc32c ✓ py4j ✓ mccabe ✓ tabulate ✓ matplotlib ✓ poetry-plugin-export ✓ paramiko ✓ isort ✓ fastjsonschema ✓ pytest-cov ✓ build ✓ azure-storage-blob ✓ grpcio-tools ✗ cloudpickle ✓ portalocker ✓ google-cloud-bigquery ✓ gunicorn ✓ dnspython ✓ google-api-python-client ✓ pyproject-hooks ✗ networkx ✗ mock ✓ azure-identity ✓ sqlparse ✓ py ✓ threadpoolctl ✓ httplib2 ✓ marshmallow ✓ rapidfuzz ✓ prompt-toolkit ✓ msal-extensions ✓ google-auth-oauthlib ✓ joblib ✓ awswrangler ✓ kiwisolver ✓ docker ✓ termcolor ✓ typedload ✓ cython ✓ ipython ✗ fonttools ✓ nest-asyncio ✓ argcomplete ✓ starlette ✓ babel ✓ cycler ✓ ply ✗ redis ✓ ruamel-yaml-clib ✓ tzlocal ✓ xmltodict ✓ defusedxml ✓ uritemplate ✓ pymysql ✓ opentelemetry-semantic-conventions ✓ black ✓ sentry-sdk ✓ mako ✓ types-requests ✗ setuptools-scm ✓ pendulum ✓ google-auth-httplib2 ✓ cachecontrol ✓ traitlets ✗ markdown ✓ tornado ✓ pyflakes ✗ pyrsistent ✓ huggingface-hub ✓ jedi ✓ distro ✓ nodeenv ✓ uvicorn ✓ poetry ✓ prometheus-client ✓ openai ✓ flake8 ✗ transformers ✓ toml ✓ kubernetes ✓ contourpy ✗ scramp ✓ pyzmq ✓ dulwich ✓ parso ✓ croniter ✓ grpc-google-iam-v1 ✓

Top 240 - 360

debugpy ✓ crashtest ✓ pymongo ✓ cleo ✓ matplotlib-inline ✓ typer ✓ python-slugify ✓ webencodings ✗ installer ✗ websockets ✓ multiprocess ✓ jsonpointer ✓ pycryptodomex ✓ sphinx ✗ orjson ✓ pycryptodome ✓ requests-aws4auth ✓ stack-data ✓ asttokens ✓ pytest-mock ✓ mypy ✓ typing-inspect ✓ hatchling ✓ executing ✓ arrow ✓ ipykernel ✗ zope-interface ✓ redshift-connector ✓ opentelemetry-proto ✓ python-json-logger ✓ loguru ✓ lazy-object-proxy ✓ aiofiles ✓ pytzdata ✗ jupyter-core ✗ colorlog ✓ pure-eval ✓ jupyter-client ✗ aioitertools ✗ datadog ✓ types-python-dateutil ✗ identify ✗ setproctitle ✓ smart-open ✓ pre-commit ✗ bs4 ✗ pytest-runner ✗ astroid ✓ msrest ✓ elasticsearch ✓ pygithub ✓ azure-common ✓ jupyterlab ✓ opentelemetry-exporter-otlp-proto-grpc ✓ future ✓ jsonpath-ng ✓ opentelemetry-exporter-otlp ✓ rfc3339-validator ✗ pg8000 ✓ opentelemetry-exporter-otlp-proto-http ✓ nbconvert ✗ nbformat ✓ retry ✗ shapely ✓ google-cloud-secret-manager ✓ tokenizers ✓ mysql-connector-python ✓ google-cloud-pubsub ✓ torch ✓ hypothesis ✓ ordered-set ✓ pylint ✓ nbclient ✓ apache-airflow ✓ responses ✓ comm ✗ cfgv ✗ snowflake-sqlalchemy ✓ opensearch-py ✓ bleach ✓ requests-file ✗ mdit-py-plugins ✓ jupyter-server ✗ pydantic-settings ✓ jsonpatch ✓ appdirs ✗ pyspark ✓ jaraco-functools ✗ flask-caching ✗ notebook ✓ snowballstemmer ✓ mistune ✓ tinycss2 ✓ sympy ✓ opentelemetry-exporter-otlp-proto-common ✓ pkgutil-resolve-name ✗ slack-sdk ✓ google-pasta ✗ oscrypto ✓ tox ✓ pytest-xdist ✓ toolz ✓ jupyterlab-server ✓ jaraco-context ✗ ruff ✓ watchdog ✓ xlrd ✓ langchain-core ✓ humanfriendly ✓ flask-wtf ✗ aenum ✓ lz4 ✓ django ✗ connexion ✓ imagesize ✓ db-dtypes ✓ typeguard ✓ google-cloud-aiplatform ✓ tensorboard ✓ alabaster ✗

Thanks

This is derivative work from py3readiness.org, a site that previously tracked general compatibility with Python 3, which in turn was a derivative of pythonwheels.com, a site that tracks which Python distributions ship the wheel distribution.