Merge branch 'fix/todo-pass2'

This commit is contained in:
Vinta Chen
2026-09-27 15:11:22 +08:00
15 changed files with 92 additions and 63 deletions
+43 -45
View File
@@ -136,10 +136,10 @@ _Libraries for building AI applications, LLM integrations, and autonomous agents
- Agent Skills
- [django-ai-plugins](https://github.com/vintasoftware/django-ai-plugins) - Django backend agent skills for Django, DRF, Celery, and Django-specific code review.
- [sentry-skills](https://github.com/getsentry/skills) - Python-focused engineering skills for code review, debugging, and backend workflows.
- [trailofbits-skills](https://github.com/trailofbits/skills) - Python-friendly security skills for auditing, testing, and safer backend development.
- [sentry-skills](https://github.com/getsentry/skills) - Agent skills the Sentry team uses for code review, pull requests, and Django reviews.
- [trailofbits-skills](https://github.com/trailofbits/skills) - Security skills for vulnerability detection, auditing, and testing.
- Orchestration
- [langchain](https://github.com/langchain-ai/langchain) - Building applications with LLMs through composability.
- [langchain](https://github.com/langchain-ai/langchain) - A framework for building agents and LLM-powered applications.
- [langgraph](https://github.com/langchain-ai/langgraph) - Low-level orchestration framework for building stateful, long-running LLM agents.
- [crewai](https://github.com/crewAIInc/crewAI) - A framework for orchestrating role-playing autonomous AI agents for collaborative task solving.
- [pydantic-ai](https://github.com/pydantic/pydantic-ai) - A Python agent framework for building generative AI applications with structured schemas.
@@ -158,7 +158,7 @@ _Libraries for building AI applications, LLM integrations, and autonomous agents
- [openviking](https://github.com/volcengine/OpenViking) - A context database for AI agents that unifies memory, resources, and skills.
- [semantica](https://github.com/semantica-agi/semantica) - A graph-native context and knowledge layer for AI agents with reasoning, provenance, and governance.
- Pre-trained Models
- [transformers](https://github.com/huggingface/transformers) - A framework that lets you easily use pre-trained transformer models for NLP, vision, and audio tasks.
- [transformers](https://github.com/huggingface/transformers) - The model-definition framework for pretrained models in text, computer vision, audio, video, and multimodal tasks, for inference and training.
- LLM Inference and Serving
- [sglang](https://github.com/sgl-project/sglang) - A high-performance serving framework for large language models and multimodal models.
- [vllm](https://github.com/vllm-project/vllm) - A high-throughput and memory-efficient inference and serving engine for LLMs.
@@ -198,14 +198,14 @@ _Libraries for Machine Learning. Also see [awesome-machine-learning](https://git
- General
- [scikit-learn](https://github.com/scikit-learn/scikit-learn) - The most popular Python library for Machine Learning with extensive documentation and community support.
- [pgmpy](https://github.com/pgmpy/pgmpy) - A Python library for probabilistic graphical models and Bayesian networks.
- [pgmpy](https://github.com/pgmpy/pgmpy) - A Python library for causal and probabilistic reasoning with graphical models.
- [feature-engine](https://github.com/feature-engine/feature_engine) - sklearn compatible API with the widest toolset for feature engineering and selection.
- Gradient Boosting
- [xgboost](https://github.com/dmlc/xgboost) - A scalable, portable, and distributed gradient boosting library.
- [lightgbm](https://github.com/lightgbm-org/LightGBM) - A fast, distributed, high performance gradient boosting framework.
- [catboost](https://github.com/catboost/catboost) - A fast, scalable, high performance gradient boosting on decision trees library.
- Time Series Forecasting
- [timesfm](https://github.com/google-research/timesfm) - A pretrained foundation model from Google Research for time-series forecasting.
- [timesfm](https://github.com/google-research/timesfm) - A pretrained foundation model from Google Research for time-series forecasting, with non-commercial default weights.
### Natural Language Processing
@@ -223,15 +223,15 @@ _Libraries for working with human languages._
### Computer Vision
_Libraries for Computer Vision._
_Libraries for image and video analysis, object detection, and OCR._
- General
- [opencv-python](https://github.com/opencv/opencv-python) - Open Source Computer Vision Library.
- [ultralytics](https://github.com/ultralytics/ultralytics) - Ultralytics YOLO for object detection, segmentation, pose estimation, and classification with state-of-the-art accuracy and speed.
- [ultralytics](https://github.com/ultralytics/ultralytics) - Ultralytics YOLO for object detection, segmentation, pose estimation, classification, and tracking.
- [kornia](https://github.com/kornia/kornia/) - Open Source Differentiable Computer Vision Library for PyTorch.
- [fiftyone](https://github.com/voxel51/fiftyone) - The open-source tool for building high-quality datasets and computer vision models.
- OCR
- [pytesseract](https://github.com/madmaze/pytesseract) - A wrapper for [Google Tesseract OCR](https://github.com/tesseract-ocr).
- [pytesseract](https://github.com/madmaze/pytesseract) - A wrapper for the [Tesseract OCR](https://github.com/tesseract-ocr) engine.
- [easyocr](https://github.com/JaidedAI/EasyOCR) - Ready-to-use OCR with 80+ languages supported.
### Recommender Systems
@@ -251,13 +251,11 @@ _Traditional full stack web frameworks. Also see [Web APIs](#web-apis)._
- Synchronous
- [flask](https://github.com/pallets/flask) - A microframework for Python.
- [awesome-flask](https://github.com/humiaozuzu/awesome-flask)
- [django](https://github.com/django/django) - The most popular web framework in Python.
- [django](https://github.com/django/django) - A high-level web framework that encourages rapid development and clean, pragmatic design.
- [awesome-django](https://github.com/wsvincent/awesome-django)
- [bottle](https://github.com/bottlepy/bottle) - A fast and simple micro-framework distributed as a single file with no dependencies.
- [pyramid](https://github.com/Pylons/pyramid) - A small, fast, down-to-earth, open source Python web framework.
- [awesome-pyramid](https://github.com/uralbash/awesome-pyramid)
- [fasthtml](https://github.com/AnswerDotAI/fasthtml) - The fastest way to create an HTML app.
- [awesome-fasthtml](https://github.com/amosgyamfi/awesome-fasthtml)
- Asynchronous
- [starlette](https://github.com/Kludex/starlette) - A lightweight ASGI framework and toolkit for building high-performance async services.
- [tornado](https://github.com/tornadoweb/tornado) - A web framework and asynchronous networking library.
@@ -287,7 +285,7 @@ _Libraries for building RESTful, GraphQL, and RPC APIs._
_ASGI and WSGI compatible web servers._
- ASGI
- [uvicorn](https://github.com/Kludex/uvicorn) - A lightning-fast ASGI server implementation, using uvloop and httptools.
- [uvicorn](https://github.com/Kludex/uvicorn) - A lightning-fast ASGI server implementation.
- [granian](https://github.com/emmett-framework/granian) - A Rust HTTP server for Python applications built on top of Hyper and Tokio, supporting WSGI/ASGI/RSGI.
- [hypercorn](https://github.com/pgjones/hypercorn) - An ASGI and WSGI Server based on Hyper libraries and inspired by Gunicorn.
- WSGI
@@ -299,13 +297,13 @@ _ASGI and WSGI compatible web servers._
_Libraries for working with WebSocket._
- [websockets](https://github.com/python-websockets/websockets) - A library for building WebSocket servers and clients with a focus on correctness and simplicity.
- [channels](https://github.com/django/channels) - Developer-friendly asynchrony for Django.
- [channels](https://github.com/django/channels) - Brings WebSocket, long-poll HTTP, and other async support to Django.
- [flask-socketio](https://github.com/miguelgrinberg/Flask-SocketIO) - Socket.IO integration for Flask applications.
- [autobahn-python](https://github.com/crossbario/autobahn-python) - WebSocket & WAMP for Python on Twisted and [asyncio](https://docs.python.org/3/library/asyncio.html).
### Template Engines
_Libraries and tools for templating and lexing._
_Libraries for rendering text and HTML from templates._
- [jinja](https://github.com/pallets/jinja) - A modern and designer friendly templating language.
- [mako](https://github.com/sqlalchemy/mako) - Hyperfast and lightweight templating for the Python platform.
@@ -325,7 +323,7 @@ _Libraries for implementing authentication schemes._
- [oauthlib](https://github.com/oauthlib/oauthlib) - A generic and thorough implementation of the OAuth request-signing logic.
- [authlib](https://github.com/authlib/authlib) - A comprehensive library for building OAuth, OpenID Connect, and JWT/JWS/JWE/JWK/JWA.
- [django-allauth](https://github.com/pennersr/django-allauth) - Authentication app for Django that "just works."
- [django-oauth-toolkit](https://github.com/django-oauth/django-oauth-toolkit) - OAuth 2 goodies for Django.
- [django-oauth-toolkit](https://github.com/django-oauth/django-oauth-toolkit) - An OAuth 2.0 authorization server for Django.
- JWT
- [pyjwt](https://github.com/jpadilla/pyjwt) - JSON Web Token implementation in Python.
- Permissions
@@ -337,7 +335,7 @@ _Libraries for implementing authentication schemes._
_Libraries for administrative interfaces._
- [flask-admin](https://github.com/pallets-eco/flask-admin) - Simple and extensible administrative interface framework for Flask.
- [django-unfold](https://github.com/unfoldadmin/django-unfold) - Elevate your Django admin with a stunning modern interface, powerful features, and seamless user experience.
- [django-unfold](https://github.com/unfoldadmin/django-unfold) - A modern Django admin theme for building dashboards, internal tools, and business applications.
- [django-grappelli](https://github.com/sehmaschine/django-grappelli) - A jazzy skin for the Django Admin-Interface.
### CMS
@@ -392,7 +390,7 @@ _Libraries to automate web scraping and extract web content._
### Email
_Libraries for sending and parsing email, and mail server management._
_Libraries for sending email._
- [yagmail](https://github.com/kootenpv/yagmail) - Yet another Gmail/SMTP client.
@@ -419,7 +417,7 @@ _Libraries for connecting and operating databases._
- MySQL - [awesome-mysql](https://github.com/shlomi-noach/awesome-mysql)
- [pymysql](https://github.com/PyMySQL/PyMySQL) - A pure-Python MySQL and MariaDB client library, based on PEP 249.
- [mysqlclient](https://github.com/PyMySQL/mysqlclient) - MySQL connector with Python 3 support ([mysql-python](https://sourceforge.net/projects/mysql-python/) fork).
- [mysqlclient](https://github.com/PyMySQL/mysqlclient) - MySQL and MariaDB connector ([MySQLdb1](https://github.com/farcepest/MySQLdb1) fork).
- PostgreSQL - [awesome-postgres](https://github.com/dhamaniasad/awesome-postgres)
- [psycopg](https://github.com/psycopg/psycopg) - The most popular PostgreSQL adapter for Python.
- [asyncpg](https://github.com/MagicStack/asyncpg) - A fast PostgreSQL Database Client Library for Python/asyncio.
@@ -432,7 +430,7 @@ _Libraries for connecting and operating databases._
- Other Relational Databases
- [pyodbc](https://github.com/mkleehammer/pyodbc) - An ODBC bridge for connecting to SQL Server and any other ODBC-accessible database.
- [oracledb](https://github.com/oracle/python-oracledb) - The official Python driver for Oracle Database, successor to cx_Oracle.
- [mssql-python](https://github.com/microsoft/mssql-python) - Official Microsoft driver for SQL Server and Azure SQL, built on ODBC for high performance and low memory usage.
- [mssql-python](https://github.com/microsoft/mssql-python) - Official Microsoft driver for SQL Server and Azure SQL, built on ODBC for high performance.
- NoSQL Databases
- [redis](https://github.com/redis/redis-py) - The Python client for Redis.
- [pymongo](https://github.com/mongodb/mongo-python-driver) - The official Python client for MongoDB.
@@ -459,8 +457,8 @@ _In-process databases usable directly from Python._
_Libraries for caching data._
- [cachetools](https://github.com/tkem/cachetools) - Extensible memoizing collections and decorators.
- [diskcache](https://github.com/grantjenks/python-diskcache) - SQLite and file backed cache backend with faster lookups than memcached and redis.
- [hishel](https://github.com/karpetrosyan/hishel) - RFC 9111 compliant HTTP caching for httpx and requests, with sync and async support.
- [diskcache](https://github.com/grantjenks/python-diskcache) - SQLite and file backed cache backend, compatible with Django.
- [hishel](https://github.com/karpetrosyan/hishel) - RFC 9111 compliant HTTP caching for clients like httpx and requests and servers like FastAPI, with sync and async support.
- [dogpile.cache](https://github.com/sqlalchemy/dogpile.cache) - dogpile.cache is a next generation replacement for Beaker made by the same authors.
- [django-cacheops](https://github.com/Suor/django-cacheops) - A slick ORM cache with automatic granular event-driven invalidation.
@@ -502,7 +500,7 @@ _Libraries for data extraction, transformation, and loading pipelines across mul
- [pathway](https://github.com/pathwaycom/pathway) - Python ETL framework for stream processing, real-time analytics, LLM pipelines, and RAG.
- Financial Data
- [yfinance](https://github.com/ranaroussi/yfinance) - Easy Pythonic way to download market and financial data from Yahoo Finance.
- [akshare](https://github.com/akfamily/akshare) - A financial data interface library, built for human beings!
- [akshare](https://github.com/akfamily/akshare) - A financial data interface library, with data provided for academic research only.
- [edgartools](https://github.com/dgunning/edgartools) - Library for downloading structured data from SEC EDGAR filings and XBRL financial statements.
- [openbb](https://github.com/OpenBB-finance/OpenBB) - A financial data platform for analysts, quants and AI agents.
@@ -512,7 +510,7 @@ _Libraries for validating data. Used for forms in many cases._
- [pydantic](https://github.com/pydantic/pydantic) - Data validation using Python type hints.
- [jsonschema](https://github.com/python-jsonschema/jsonschema) - An implementation of [JSON Schema](https://json-schema.org/) for Python.
- [pandera](https://github.com/unionai-oss/pandera) - A data validation library for dataframes, with support for pandas, polars, and Spark.
- [pandera](https://github.com/unionai-oss/pandera) - A data validation library for dataframes, with support for pandas, polars, PySpark, and more.
### Data Visualization
@@ -548,7 +546,7 @@ _Libraries for scientific computing. Also see [Python-for-Scientists](https://gi
- Core
- [numpy](https://github.com/numpy/numpy) - A fundamental package for scientific computing with Python.
- [scipy](https://github.com/scipy/scipy) - Fundamental algorithms for scientific computing in Python.
- [numba](https://github.com/numba/numba) - Python JIT compiler to LLVM aimed at scientific Python.
- [numba](https://github.com/numba/numba) - A NumPy-aware JIT compiler for Python, using LLVM.
- Symbolic Mathematics
- [sympy](https://github.com/sympy/sympy) - A Python library for symbolic mathematics.
- Statistics
@@ -578,7 +576,7 @@ _Libraries for quantum computing._
- [qiskit](https://github.com/Qiskit/qiskit) - An IBM-backed quantum SDK for building, simulating, and running circuits on real quantum hardware.
- [qutip](https://github.com/qutip/qutip) - Quantum Toolbox in Python.
- [pennylane](https://github.com/PennyLaneAI/pennylane) - A hybrid quantum-classical machine learning library with automatic differentiation support.
- [pennylane](https://github.com/PennyLaneAI/pennylane) - A cross-platform library for quantum computing, quantum machine learning, and quantum chemistry.
- [cirq](https://github.com/quantumlib/Cirq) - A Google-developed framework focused on hardware-aware quantum circuit design for NISQ devices.
**Developer Tools**
@@ -601,7 +599,7 @@ _Python implementation of data structures, algorithms and design patterns. Also
_Interactive Python interpreters (REPL)._
- [ipython](https://github.com/ipython/ipython) - A powerful interactive Python shell, and the kernel behind Jupyter notebooks.
- [jupyter](https://github.com/jupyter/notebook) - A rich toolkit to help you make the most out of using Python interactively.
- [jupyter](https://github.com/jupyter/notebook) - A web-based notebook environment for interactive computing.
- [awesome-jupyter](https://github.com/markusschanta/awesome-jupyter)
- [marimo](https://github.com/marimo-team/marimo) - Transform data and train models, feels like a next-gen notebook, stored as Git-friendly Python.
- [ptpython](https://github.com/prompt-toolkit/ptpython) - Advanced Python REPL built on top of the [python-prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit).
@@ -692,7 +690,7 @@ _Libraries for debugging code._
### Build Tools
_Compile software from source code. If you're looking for Python packaging/build tools, see [Package Management](#package-management)._
_Task runners and software build tools. If you're looking for Python packaging/build tools, see [Package Management](#package-management)._
- [invoke](https://github.com/pyinvoke/invoke) - A tool for managing shell-oriented subprocesses and organizing executable Python code into CLI-invokable tasks.
- [scons](https://github.com/SCons/scons) - A software construction tool.
@@ -742,10 +740,10 @@ _Software and libraries for DevOps._
_Frameworks and libraries for Distributed Computing._
- [ray](https://github.com/ray-project/ray/) - A system for parallel and distributed Python that unifies the machine learning ecosystem.
- [ray](https://github.com/ray-project/ray/) - A unified framework for scaling AI and Python applications.
- [pyspark](https://github.com/apache/spark) - [Apache Spark](https://spark.apache.org/) Python API.
- [dask](https://github.com/dask/dask) - A flexible parallel computing library for analytic computing.
- [joblib](https://github.com/joblib/joblib) - A set of tools to provide lightweight pipelining in Python.
- [joblib](https://github.com/joblib/joblib) - Parallel computing and disk-based caching for Python functions.
- [mpi4py](https://github.com/mpi4py/mpi4py) - Python bindings for MPI.
### Task Queues
@@ -755,7 +753,7 @@ _Libraries for working with task queues._
- [celery](https://github.com/celery/celery) - An asynchronous task queue/job queue based on distributed message passing.
- [rq](https://github.com/rq/rq) - Simple job queues for Python.
- [dramatiq](https://github.com/Bogdanp/dramatiq) - A fast and reliable background task processing library for Python 3.
- [huey](https://github.com/coleifer/huey) - Little multi-threaded task queue.
- [huey](https://github.com/coleifer/huey) - A little task queue with multi-process, multi-thread, or greenlet workers.
- [taskiq](https://github.com/taskiq-python/taskiq) - Distributed task queue with native asyncio support and pluggable brokers.
### Messaging
@@ -843,8 +841,8 @@ _Libraries for working with graphical user interface applications._
- Desktop
- [pygobject](https://github.com/GNOME/pygobject) - Python Bindings for GLib/GObject/GIO/GTK.
- [wxPython](https://github.com/wxWidgets/Phoenix) - A blending of the wxWidgets C++ class library with the Python.
- [kivy](https://github.com/kivy/kivy) - A library for creating NUI applications, running on Windows, Linux, Mac OS X, Android and iOS.
- [wxPython](https://github.com/wxWidgets/Phoenix) - A cross-platform GUI toolkit that wraps the wxWidgets C++ library.
- [kivy](https://github.com/kivy/kivy) - An open-source framework for cross-platform GUI apps on desktop, mobile, and embedded platforms.
- [dearpygui](https://github.com/hoffstadt/DearPyGui) - A simple GPU-accelerated Python GUI framework.
- [toga](https://github.com/beeware/toga) - A Python native, OS native GUI toolkit.
- Qt
@@ -868,7 +866,7 @@ _Libraries for working with graphical user interface applications._
_Libraries for parsing and manipulating plain texts._
- Encoding and Unicode
- [charset-normalizer](https://github.com/jawah/charset_normalizer) - Universal character encoding detector, the default of the requests ecosystem.
- [charset-normalizer](https://github.com/jawah/charset_normalizer) - Universal character encoding detector, and a dependency of requests.
- [chardet](https://github.com/chardet/chardet) - Python character encoding detector.
- [ftfy](https://github.com/rspeer/python-ftfy) - Makes Unicode text less broken and more consistent automagically.
- Fuzzy Matching
@@ -880,7 +878,7 @@ _Libraries for parsing and manipulating plain texts._
- [babel](https://github.com/python-babel/babel) - An internationalization library for Python.
- Parser
- [pygments](https://github.com/pygments/pygments) - A generic syntax highlighter.
- [pyparsing](https://github.com/pyparsing/pyparsing) - A general purpose framework for generating parsers.
- [pyparsing](https://github.com/pyparsing/pyparsing) - A Python library for creating PEG parsers.
- [sqlparse](https://github.com/andialbrecht/sqlparse) - A non-validating SQL parser.
- [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) - Parsing, formatting, storing and validating international phone numbers.
- [parsy](https://github.com/python-parsy/parsy) - Easy, generic parser combinator library for creating parsers.
@@ -899,11 +897,11 @@ _Libraries for working with HTML and XML._
- [lxml](https://github.com/lxml/lxml) - A very fast, easy-to-use and versatile library for handling HTML and XML.
- [xmltodict](https://github.com/martinblech/xmltodict) - Working with XML feel like you are working with JSON.
- [markupsafe](https://github.com/pallets/markupsafe) - Safely adds untrusted strings to HTML/XML markup.
- [justhtml](https://github.com/EmilStenstrom/justhtml/) - A pure Python HTML5 parser that just works.
- [justhtml](https://github.com/EmilStenstrom/justhtml/) - A pure Python HTML5 parser that sanitizes untrusted HTML by default.
### File Format Processing
_Libraries for parsing and manipulating specific text formats._
_Libraries for parsing and manipulating specific file formats._
- General
- [pyelftools](https://github.com/eliben/pyelftools) - Parsing and analyzing ELF files and DWARF debugging information.
@@ -921,7 +919,7 @@ _Libraries for parsing and manipulating specific text formats._
- PDF
- [pypdf](https://github.com/py-pdf/pypdf) - A library capable of splitting, merging, cropping, and transforming PDF pages.
- [reportlab](https://www.reportlab.com/opensource/) - Allowing Rapid creation of rich PDF documents.
- [pdfminer.six](https://github.com/pdfminer/pdfminer.six) - Pdfminer.six is a community maintained fork of the original PDFMiner.
- [pdfminer.six](https://github.com/pdfminer/pdfminer.six) - A community-maintained fork of PDFMiner for extracting information from PDF documents.
- HTML-to-PDF
- [weasyprint](https://github.com/Kozea/WeasyPrint) - A visual rendering engine for HTML and CSS that can export to PDF.
- Markdown
@@ -930,7 +928,7 @@ _Libraries for parsing and manipulating specific text formats._
- [mistune](https://github.com/lepture/mistune) - A fast yet powerful Python Markdown parser with renderers and plugins.
- Data Formats
- [tomllib](https://docs.python.org/3/library/tomllib.html) - (Python standard library) Parse TOML files.
- [pyyaml](https://github.com/yaml/pyyaml) - YAML implementations for Python.
- [pyyaml](https://github.com/yaml/pyyaml) - A full-featured YAML framework for Python.
### File Manipulation
@@ -956,7 +954,7 @@ _Libraries for manipulating images._
- [scikit-image](https://github.com/scikit-image/scikit-image) - A Python library for (scientific) image processing.
- [rembg](https://github.com/danielgatis/rembg) - A tool to remove image backgrounds.
- [wand](https://github.com/emcconville/wand) - Python bindings for [MagickWand](https://imagemagick.org/magick-wand/), C API for ImageMagick.
- [pyvips](https://github.com/libvips/pyvips) - A fast image processing library with low memory needs.
- [pyvips](https://github.com/libvips/pyvips) - A binding for libvips, a fast image processing library with low memory needs.
- Image Serving
- [thumbor](https://github.com/thumbor/thumbor) - A smart imaging service. It enables on-demand crop, re-sizing and flipping of images.
@@ -1044,7 +1042,7 @@ _Libraries for working with dates and times._
- [python-dateutil](https://github.com/dateutil/dateutil) - Extensions to the standard Python [datetime](https://docs.python.org/3/library/datetime.html) module.
- [dateparser](https://github.com/scrapinghub/dateparser) - A Python parser for human-readable dates in over 200 language locales.
- [pendulum](https://github.com/python-pendulum/pendulum) - Python datetimes made easy.
- [whenever](https://github.com/ariebovenberg/whenever) - A modern datetime library, type-safe and DST-safe, backed by Rust.
- [whenever](https://github.com/ariebovenberg/whenever) - A modern datetime library, type-safe and DST-safe, in Rust or pure Python.
**Python Toolchain**
@@ -1074,7 +1072,7 @@ _Libraries for package and dependency management._
### Package Repositories
_Local PyPI repository server and proxies._
_Local PyPI repository servers, proxies, and mirrors._
- [bandersnatch](https://github.com/pypa/bandersnatch/) - PyPI mirroring tool provided by Python Packaging Authority (PyPA).
- [devpi](https://github.com/devpi/devpi) - PyPI server and packaging/testing/release tool.
@@ -1109,9 +1107,9 @@ _Libraries for storing and parsing configuration options._
_Libraries for cryptographic primitives and secure protocols._
- [cryptography](https://github.com/pyca/cryptography) - A package designed to expose cryptographic primitives and recipes to Python developers.
- [pynacl](https://github.com/pyca/pynacl) - Python binding to the Networking and Cryptography (NaCl) library.
- [pynacl](https://github.com/pyca/pynacl) - Python binding to libsodium, a fork of the Networking and Cryptography (NaCl) library.
- [paramiko](https://github.com/paramiko/paramiko) - The leading native Python SSHv2 protocol library.
- [itsdangerous](https://github.com/pallets/itsdangerous) - Various helpers to pass trusted data to untrusted environments.
- [itsdangerous](https://github.com/pallets/itsdangerous) - Safely pass trusted data to untrusted environments and back.
### Penetration Testing
@@ -1152,7 +1150,7 @@ _Python programming on Microsoft Windows._
- [pythonnet](https://github.com/pythonnet/pythonnet) - Python Integration with the .NET Common Language Runtime (CLR).
- [pywin32](https://github.com/mhammond/pywin32) - Python Extensions for Windows.
- [pyenv-win](https://github.com/pyenv-win/pyenv-win) - A Python version manager for Windows ([rbenv-win](https://github.com/nak1114/rbenv-win) fork).
- [winpython](https://github.com/winpython/winpython) - Portable development environment for Windows 10/11.
- [winpython](https://github.com/winpython/winpython) - Portable Python distribution for Windows.
### Miscellaneous
+2 -1
View File
@@ -755,8 +755,9 @@ def build(repo_root: Path) -> None:
if parent_category:
breadcrumbs.append((parent_category["name"], category_public_url(parent_category)))
breadcrumbs.append((category["name"], category_url))
page_entries = [entry for group in entry_groups for entry in group["entries"]] if entry_groups else entries
category_json_ld = json.dumps(
build_category_json_ld(category_title.removesuffix(" - Awesome Python"), category_url, category_description, entries, breadcrumbs),
build_category_json_ld(category_title.removesuffix(" - Awesome Python"), category_url, category_description, page_entries, breadcrumbs),
ensure_ascii=False,
).replace("</", "<\\/")
(page_dir / "index.html").write_text(
@@ -1,4 +1,4 @@
Validate API input and config with Pydantic, the Python data validation library built on type hints. Use Pandera for dataframes, jsonschema for JSON Schema.
Declare API input and config as type hints, and Pydantic validates them. Pandera brings Python data validation to dataframes, and jsonschema covers JSON Schema.
How to choose:
@@ -1,4 +1,4 @@
Most code should handle time zones with zoneinfo and pick python-dateutil, the Python date library for parsing date strings and adding months.
Handle time zones with the built-in zoneinfo. Parsing date strings and adding months is where a Python date library earns its install: python-dateutil.
How to choose:
@@ -1,4 +1,4 @@
PDF, Word, and Excel files open with pypdf, python-docx, and openpyxl, a Python file format library for each. MarkItDown turns all three into Markdown.
pypdf reads PDFs, python-docx Word files, and openpyxl Excel sheets: one Python file format library per format. MarkItDown turns any of them into Markdown.
How to choose:
@@ -1,4 +1,4 @@
A 2D game needs a loop: write your own with pygame-ce, the Python game development library, or let Arcade run it. Panda3D does 3D, and Ren'Py visual novels.
pygame-ce leaves the 2D game loop to you, while Arcade runs it for you. For 3D, Panda3D covers Python game development, and Ren'Py builds visual novels.
How to choose:
@@ -1,4 +1,4 @@
If your templates should hold no Python code, Jinja fits: a Python template engine whose sandbox also renders untrusted templates. Mako embeds plain Python.
Whether templates may hold Python code splits the Python template engines: Jinja keeps code out and sandboxes untrusted templates, Mako embeds plain Python.
How to choose:
+1 -1
View File
@@ -1,4 +1,4 @@
For a Django project, pick Django REST framework or Django Ninja. Outside Django, build on FastAPI, a Python API framework based on type hints.
Outside Django, declare each FastAPI endpoint with type hints. Django projects add a Python API framework on top instead: Django REST framework or Django Ninja.
How to choose:
@@ -1,4 +1,4 @@
When you want an ORM, an admin, and auth built in, use Django. Flask, a smaller Python web framework, gives you a core you extend.
How much should a Python web framework build in? Django comes with an ORM, an admin, and auth; Flask gives you a small core to extend.
How to choose:
+1 -1
View File
@@ -1,4 +1,4 @@
In production, Gunicorn serves WSGI apps like Django, and Uvicorn serves ASGI apps like FastAPI. Waitress, a pure-Python web server, runs WSGI apps on Windows.
In production, Gunicorn serves WSGI apps like Django, and Uvicorn ASGI apps like FastAPI. Need a Python web server on Windows? Waitress runs WSGI there.
How to choose:
+1 -1
View File
@@ -1,4 +1,4 @@
With Django, Channels is the pick; with Flask and Socket.IO clients, Flask-SocketIO. Standalone apps run on websockets, a Python WebSocket library.
Your Python WebSocket library follows your framework: Channels on Django, Flask-SocketIO on Flask with Socket.IO clients. websockets needs no framework.
How to choose:
+1 -6
View File
@@ -84,12 +84,7 @@ def collect_names(readme_text: str) -> list[str]:
def fetch_clickpy(names: list[str]) -> dict[str, int]:
in_list = ", ".join(f"'{name}'" for name in names)
query = (
"SELECT project, sum(count) AS downloads "
"FROM pypi.pypi_downloads_per_day "
f"WHERE project IN ({in_list}) AND date >= today() - 30 "
"GROUP BY project FORMAT JSON"
)
query = f"SELECT project, sum(count) AS downloads FROM pypi.pypi_downloads_per_day WHERE project IN ({in_list}) AND date >= today() - 30 GROUP BY project FORMAT JSON"
resp = httpx.post(CLICKPY_URL, content=query, timeout=60)
resp.raise_for_status()
return {row["project"]: int(row["downloads"]) for row in resp.json()["data"]}
+3 -1
View File
@@ -145,7 +145,9 @@ function applyFilters() {
collapseAll();
rows.forEach(function (row) {
// Number rows in their sorted DOM order, not the load order `rows` keeps
const orderedRows = tbody ? tbody.querySelectorAll("tr.row") : rows;
orderedRows.forEach(function (row) {
let show = true;
if (query) {
+1 -1
View File
@@ -241,7 +241,7 @@
<td class="col-arrow"><span class="arrow">&rarr;</span></td>
</tr>
{% if entry.description %}
<tr class="desc-row" aria-hidden="true" hidden>
<tr class="desc-row" hidden>
<td class="col-num"></td>
<td colspan="6">
<div class="desc-text">{{ entry.description | safe }}</div>
+33
View File
@@ -679,6 +679,39 @@ class TestBuild:
{"@type": "ListItem", "position": 2, "name": "Widgets", "item": "https://awesome-python.com/categories/widgets/"},
]
def test_category_json_ld_follows_page_order(self, tmp_path):
readme = textwrap.dedent("""\
# Awesome Python
Intro.
## Projects
**Tools**
## Widgets
_Widget libraries._
- [zeta](https://example.com/zeta) - Listed first.
- [alpha](https://example.com/alpha) - Listed second.
# Contributing
Help!
""")
(tmp_path / "README.md").write_text(readme, encoding="utf-8")
self._copy_real_templates(tmp_path)
build(tmp_path)
category_html = (tmp_path / "website" / "output" / "categories" / "widgets" / "index.html").read_text(encoding="utf-8")
marker = '<script type="application/ld+json">'
start = category_html.index(marker) + len(marker)
data = json.loads(category_html[start : category_html.index("</script>", start)])
collection = next(node for node in data["@graph"] if node["@type"] == "CollectionPage")
items = collection["mainEntity"]["itemListElement"]
assert [(item["position"], item["name"]) for item in items] == [(1, "zeta"), (2, "alpha")]
def test_group_page_falls_back_to_default_description_in_json_ld(self, tmp_path):
readme = textwrap.dedent("""\
# T