# Top ~500 PyPI packages by download volume (lowercase, one per line).
# Used by services/content_validator.py to validate library/API references
# in generated post content. If a backtick-quoted identifier matches one of
# these names, we treat it as a real library reference.
#
# Curated snapshot — refresh periodically from https://hugovk.github.io/top-pypi-packages/
# Lines starting with "#" and blank lines are ignored.
#
# Normalization rules applied at load time:
#   - PyPI dashes/underscores are both accepted (scikit-learn == scikit_learn)
#   - Case-insensitive
boto3
urllib3
botocore
requests
charset-normalizer
certifi
idna
setuptools
typing-extensions
python-dateutil
s3transfer
six
pyyaml
numpy
cryptography
cffi
packaging
pycparser
fsspec
awscli
grpcio-status
click
pandas
google-api-core
jmespath
wheel
rsa
pyasn1
attrs
pyjwt
pytz
pydantic
protobuf
platformdirs
pydantic-core
pip
colorama
jinja2
markupsafe
tomli
werkzeug
flask
pyparsing
google-auth
pytest
pluggy
filelock
annotated-types
googleapis-common-protos
wrapt
sqlalchemy
cachetools
scipy
async-timeout
psutil
greenlet
more-itertools
pillow
pygments
google-cloud-storage
docutils
iniconfig
grpcio
virtualenv
redis
et-xmlfile
fastapi
starlette
anyio
tqdm
chardet
soupsieve
beautifulsoup4
frozenlist
distro
uvicorn
multidict
aiohttp
yarl
aiosignal
matplotlib
openpyxl
scikit-learn
rich
lxml
pyopenssl
openai
anthropic
httpx
httpcore
h11
sniffio
exceptiongroup
regex
psycopg2
psycopg2-binary
psycopg
psycopg-binary
tenacity
dnspython
asgiref
django
djangorestframework
gunicorn
whitenoise
importlib-metadata
importlib-resources
zipp
oauthlib
requests-oauthlib
markdown
markdown-it-py
mdurl
mdit-py-plugins
pymdown-extensions
jsonschema
jsonschema-specifications
referencing
rpds-py
networkx
sympy
joblib
threadpoolctl
torch
tensorflow
keras
transformers
huggingface-hub
tokenizers
datasets
accelerate
safetensors
sentencepiece
bitsandbytes
peft
trl
diffusers
onnxruntime
onnx
langchain
langchain-core
langchain-community
langchain-openai
langchain-anthropic
langgraph
langsmith
chromadb
pinecone-client
pinecone
weaviate-client
qdrant-client
faiss-cpu
faiss-gpu
llama-index
llama-cpp-python
ollama
tiktoken
gradio
streamlit
dash
plotly
bokeh
seaborn
statsmodels
xgboost
lightgbm
catboost
mlflow
wandb
optuna
ray
dask
polars
pyarrow
duckdb
sqlite-utils
alembic
sqlmodel
tortoise-orm
peewee
redis-py-cluster
aioredis
kafka-python
confluent-kafka
pika
celery
rq
kombu
billiard
amqp
vine
boto
botocore-stubs
types-requests
types-urllib3
types-pyyaml
types-protobuf
mypy
mypy-extensions
pyright
ruff
black
isort
flake8
pycodestyle
pyflakes
mccabe
bandit
safety
pre-commit
nox
tox
coverage
pytest-cov
pytest-asyncio
pytest-mock
pytest-xdist
pytest-timeout
pytest-django
pytest-sugar
pytest-html
pytest-benchmark
hypothesis
factory-boy
faker
freezegun
responses
httpretty
vcrpy
mock
pretend
parameterized
tldextract
publicsuffix2
ua-parser
user-agents
phonenumbers
python-slugify
text-unidecode
unidecode
python-magic
filetype
send2trash
watchdog
watchfiles
python-multipart
aiofiles
asyncpg
asyncssh
paramiko
fabric
invoke
docker
docker-compose
kubernetes
openshift
ansible
ansible-core
ansible-runner
salt
saltpkg
supervisor
pendulum
arrow
croniter
schedule
apscheduler
fakeredis
selenium
playwright
pyppeteer
requests-html
scrapy
scrapy-splash
beautifulsoup
pyquery
html5lib
lxml-stubs
xmltodict
untangle
dicttoxml
jsonlines
ndjson
orjson
ujson
simplejson
demjson
rapidjson
python-rapidjson
msgpack
msgpack-python
cbor2
avro
avro-python3
fastavro
python-dotenv
environs
dynaconf
pydantic-settings
omegaconf
hydra-core
typer
fire
argcomplete
shellingham
prompt-toolkit
questionary
inquirer
pick
blessed
blessings
curses-menu
tabulate
prettytable
rich-click
textual
urwid
py-spy
memray
scalene
pyinstrument
line-profiler
memory-profiler
objgraph
pympler
guppy3
pdbpp
ipdb
ipython
jupyter
jupyterlab
notebook
ipykernel
ipywidgets
jupyter-client
jupyter-core
jupyter-server
jupyter-console
nbconvert
nbformat
papermill
voila
binder
ipyparallel
ipyleaflet
ipympl
ipyvolume
bqplot
holoviews
panel
param
datashader
hvplot
pyviz-comms
colorcet
cartopy
geopandas
shapely
pyproj
fiona
rasterio
pyshp
geopy
geographiclib
folium
leafmap
branca
pydeck
mapbox
mapboxgl
plotly-geo
geoplot
contextily
rio-cogeo
rio-tiler
stac-validator
pystac
satpy
earthengine-api
ee
sentinelsat
pykml
simplekml
fastkml
haversine
vincenty
utm
proj
geohash
pygeohash
rtree
s2sphere
h3
s2
quadkey
mercantile
morecantile
pyproj-datumgrid
tornado
bottle
pyramid
cherrypy
falcon
sanic
quart
hug
starlette-admin
fastapi-admin
django-admin
flask-admin
wtforms
flask-wtf
flask-login
flask-sqlalchemy
flask-migrate
flask-cors
flask-restful
flask-restx
flask-jwt-extended
django-allauth
django-rest-auth
djoser
dj-rest-auth
django-cors-headers
django-filter
django-extensions
django-debug-toolbar
django-environ
django-storages
django-redis
django-celery-beat
django-celery-results
django-crispy-forms
crispy-bootstrap5
cookiecutter
pyinstaller
cx-freeze
py2exe
nuitka
cython
numba
pybind11
nanobind
pypy
ctypes
cffi-stubs
pytest-xprocess
pytest-playwright
pytest-selenium
pytest-bdd
behave
pytest-bdd-ng
robotframework
locust
molotov
httpx-mock
respx
aioresponses
requests-mock
betamax
vcr
cassette
typeguard
runtype
pytypes
pydantic-extra-types
phonenumberslite
email-validator
python-jose
pyjwt-authlib
authlib
jwcrypto
pycryptodome
pycryptodomex
pynacl
bcrypt
passlib
argon2-cffi
scrypt
cryptography-vectors
hyperlink
uvloop
trio
trio-asyncio
curio
anyio-curio
structlog
loguru
python-json-logger
colorlog
coloredlogs
humanfriendly
click-completion
click-didyoumean
click-plugins
click-repl
click-logging
sentry-sdk
opentelemetry-api
opentelemetry-sdk
opentelemetry-instrumentation
opentelemetry-exporter-otlp
opentelemetry-exporter-prometheus
prometheus-client
prometheus-flask-exporter
prometheus-fastapi-instrumentator
statsd
datadog
ddtrace
newrelic
elastic-apm
rollbar
bugsnag
honeybadger
airbrake
zipp-stubs
pathspec
smmap
gitpython
gitdb
pygit2
dulwich
python-git
mercurial
bzr
tomlkit
toml
pytoml
rtoml
ruamel-yaml
strictyaml
ruamel-yaml-clib
httpx-sse
sseclient
sseclient-py
eventsource
hpack
hyperframe
h2
websockets
websocket-client
python-socketio
python-engineio
socketio-client
python-snappy
lz4
zstandard
brotli
brotlicffi
blosc
blosc2
pytablewriter
openai-whisper
whisper
soundfile
librosa
pydub
audioread
speechrecognition
sounddevice
pyaudio
pyttsx3
gtts
edge-tts
coqui-tts
tts
espeak-ng
piper-tts
pandas-stubs
pyspark
pydoop
dbt-core
dbt-postgres
dbt-bigquery
dbt-snowflake
dbt-redshift
great-expectations
pandera
cerberus
marshmallow
marshmallow-sqlalchemy
schema
voluptuous
dataclasses-json
mashumaro
cattrs
desert
apischema
typic
typing-inspect
stringcase
inflection
humanize
natsort
natural
babel
flask-babel
django-babel
gettext-tools
polib
translate
googletrans
deep-translator
argostranslate
mlx
jax
flax
haiku
dm-haiku
optax
orbax
chex
rlax
bsuite
gym
gymnasium
stable-baselines3
sb3-contrib
pettingzoo
supersuit
acme
rllib
dm-env
envpool
procgen
minigrid
mujoco
dm-control
pybullet
box2d-py
pygame
arcade
panda3d
pyglet
kivy
buildozer
beeware
toga
briefcase
rumps
pyobjc
pywin32
winshell
pywinpty
conpty
prompt-termios
tmux
libtmux
i3ipc
sway-ipc
xdotool
pyautogui
pynput
keyboard
mouse
mss
screeninfo
pyscreenshot
pygetwindow
pywinauto
pygui
tkinter-async
customtkinter
ttkbootstrap
ttkthemes
tkcalendar
tksheet
# ------------------------------------------------------------------
# Supplementary entries — lower download volume but domain-relevant
# to Poindexter content (CAD, niche hardware, etc.). Updated 2026-04-21
# as part of GH-83 hallucination detection. Keeping these in a known
# list lets the topic-coherence check flag off-topic mentions instead
# of mis-reporting them as "unknown library".
cadquery
solidpython
openscad
openscad-runner
freecad
build123d
manifold3d
pycsg
py-slvs
trimesh
open3d
pyvista
pymeshlab
meshio
vtk
pyvistaqt
vedo
gmsh
pymeshfix
shapely-ops
pyvox
pyopenvdb
voxelfuse
mcp
cuda-python
jaxlib
tensorflow-gpu
torch-tb-profiler

