Python repositories reading strong
Every public repository surveyed, browsable and searchable. Including the unflattering ones — a tool that only published good results would be a badge vending machine, not a diligence instrument.
| Repository | Language | Size | Stars | Read | Band |
|---|---|---|---|---|---|
| langchain-ai/langgraph 1 adequate · 3 strong | Python | 213,940 lines | 43,789 | 2026-10-23 | |
| python-poetry/poetry 4 strong | Python | 113,213 lines | 34,307 | 2026-10-25 | |
| dgtlmoon/changedetection.io 2 adequate · 3 strong | Python | 102,058 lines | 34,682 | 2026-10-25 | |
| streamlink/streamlink 1 adequate · 3 strong | Python | 99,833 lines | 11,890 | 2026-11-03 | |
| getsentry/sentry 2 adequate · 3 strong | Python | 2,321,511 lines | 45,628 | 2026-10-22 | |
| certbot/certbot 1 adequate · 3 strong | Python | 104,561 lines | 33,257 | 2026-10-25 | |
| vectifyai/pageindex 4 strong | Python | 53,793 lines | 39,549 | 2026-10-23 | |
| frappe/erpnext 4 strong | Python | 1,013,840 lines | 40,460 | 2026-10-22 | |
| pydantic/pydantic 4 strong | Python | 251,442 lines | 28,889 | 2026-10-25 | |
| celery/celery 2 adequate · 3 strong | Python | 120,842 lines | 28,919 | 2026-10-25 | |
| locustio/locust 2 adequate · 3 strong | Python | 47,291 lines | 28,183 | 2026-10-25 | |
| onyx-dot-app/onyx 2 adequate · 3 strong | Python | 1,826,289 lines | 33,234 | 2026-10-23 | |
| topoteretes/cognee 2 adequate · 3 strong | Python | 690,790 lines | 32,699 | 2026-10-23 | |
| spotify/luigi 4 strong | Python | 71,455 lines | 18,782 | 2026-10-28 | |
| pycqa/bandit 1 adequate · 3 strong | Python | 27,519 lines | 8,369 | 2026-11-03 | |
| zilliztech/deep-searcher 2 adequate · 3 strong | Python | 25,355 lines | 8,367 | 2026-11-03 | |
| suitenumerique/docs 1 adequate · 4 strong | Python | 177,768 lines | 16,953 | 2026-10-28 | |
| prefecthq/prefect 2 adequate · 3 strong | Python | 946,356 lines | 23,936 | 2026-10-25 | |
| reflex-dev/reflex 2 adequate · 3 strong | Python | 467,491 lines | 28,977 | 2026-10-23 | |
| repowise-dev/repowise 2 adequate · 3 strong | Python | 1,688,885 lines | 8,120 | 2026-11-03 | |
| netbox-community/netbox 1 adequate · 4 strong | Python | 348,585 lines | 21,611 | 2026-10-25 | |
| wagtail/wagtail 2 adequate · 3 strong | Python | 419,102 lines | 20,507 | 2026-10-25 | |
| mai-with-u/maibot 2 adequate · 3 strong | Python | 588,507 lines | 6,833 | 2026-11-03 | |
| data-centric-ai-community/fg-data-profiling 4 strong | Python | 29,057 lines | 13,744 | 2026-10-28 | |
| goauthentik/authentik 2 adequate · 3 strong | Python | 661,040 lines | 26,050 | 2026-10-22 | |
| pallets/click 4 strong | Python | 39,748 lines | 17,770 | 2026-10-25 | |
| aio-libs/aiohttp 1 adequate · 3 strong | Python | 113,313 lines | 16,567 | 2026-10-25 | |
| avaiga/taipy 1 adequate · 4 strong | Python | 173,217 lines | 19,445 | 2026-10-23 | |
| encode/httpx 1 adequate · 3 strong | Python | 33,284 lines | 15,515 | 2026-10-25 | |
| tribler/tribler 2 adequate · 3 strong | Python | 47,827 lines | 5,343 | 2026-11-03 |
What a band means. A band sums up one reading of one commit: strong, adequate or significant findings. Here it counts the project's code, process, product, security and operations. A report reads more than that, so its band can differ from its row.
How listing works. Every public repository surveyed is listed — assessing public work is commentary on public work, and a library that hid the small ones would be quietly editorialising about which code counts. Private repositories are never listed. Anyone who proves control of a repo can attach a response to a finding, request a re-run, or delist it. Delisting is immediate and no-questions. An owner's response is removed only when it is unlawful, impersonates someone, publishes personal data or a credential, or is not about the finding. Disagreeing with the report is never a reason. To report a response, or to reach us about one, write to takedown@borehole.dev. There is no org-level score. Repositories are listed one by one, and sorting by band orders them by their own readings. Takedown: one email, 48 hours.