diff --git a/.claude/commands/review-pending-prs.md b/.claude/commands/review-pending-prs.md new file mode 100644 index 000000000..a026ce92e --- /dev/null +++ b/.claude/commands/review-pending-prs.md @@ -0,0 +1,70 @@ +--- +description: Review pending PRs against CONTRIBUTING.md acceptance criteria. +allowed-tools: Bash(gh api:*), Bash(gh pr close:*), Bash(gh pr diff:*), Bash(gh pr edit:*), Bash(gh pr list:*) +--- + +## Usage + +``` +/review-pending-prs +``` + +## Instructions + +1. Fetch 10 open PRs with details: `gh pr list --repo vinta/awesome-python --limit 10 --search "-label:\"claude reviewed\"" --json number,title,author,url,body,files,mergeable,mergeStateStatus` +2. Fetch all PR diffs in parallel: `gh pr diff --repo vinta/awesome-python` +3. Run quick rejection checks (no API calls needed): + - Has merge conflicts? (from `mergeable`/`mergeStateStatus`) + - Adds more than one project? (from diff) + - Duplicate entry? (from diff - URL already in README) + - Not a project submission? (from diff - e.g., random files, contributor list) +4. For PRs passing quick checks, fetch repo stats: `gh api repos// --jq '{stars: .stargazers_count, created: .created_at, updated: .pushed_at, language: .language, archived: .archived}'` +5. Review against all criteria in [CONTRIBUTING.md](../../CONTRIBUTING.md) +6. Present summary table with recommendations +7. Ask user: + +``` +Would you like me to: + +1. Close the rejected PRs with comments? +2. Add "claude reviewed" label to the passed PRs? +3. Do all +``` + +## Quick Rejection Checks + +Check these rules first - if any fail, recommend rejection: + +- PR has merge conflicts +- Add more than one project per PR +- Duplicate of existing entry +- Placed under an inappropriate category +- Project is archived or abandoned (no commits in 12+ months) +- No documentation or unclear use case +- Less than 100 GitHub stars AND not justified as a hidden gem +- Too niche — a thin wrapper, single-function utility, or narrow edge-case tool that most Python developers would never need + +## Output Format + +Provide a simple review: + +1. **Rejection Check** - table with the above rules and PASS/REJECT +2. **Recommendation** - PASS or REJECT + +## Close PRs + +If user asks to close/reject: + +```bash +gh pr close --repo vinta/awesome-python --comment "" +``` + +## Mark as Passed + +```bash +gh pr edit --repo vinta/awesome-python --add-label "claude reviewed" +``` + +## Extra Instructions (If Provided) + +$ARGUMENTS diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 000000000..73febfbf3 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,18 @@ +{ + "permissions": { + "allow": [ + "Bash(gh api:*)", + "Bash(gh pr close:*)", + "Bash(gh pr comment:*)", + "Bash(gh pr diff:*)", + "Bash(gh pr edit:*)", + "Bash(gh pr list:*)", + "Bash(gh pr view:*)", + "Bash(gh run list:*)", + "Bash(gh run rerun:*)", + "Bash(gh run view:*)", + "Bash(gh search:*)" + ], + "deny": [] + } +} diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..f88b55341 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,24 @@ +## Project + +[Project Name](url) + +## Checklist + +- [ ] One project per PR +- [ ] PR title format: `Add project-name` +- [ ] Entry format: `* [project-name](url) - Description ending with period.` +- [ ] Description is concise and short + +## Why This Project Is Awesome + +Which criterion does it meet? (pick one) + +- [ ] **Industry Standard** - The go-to tool for a specific use case +- [ ] **Rising Star** - 5000+ stars in < 2 years, significant adoption +- [ ] **Hidden Gem** - Exceptional quality, solves niche problems elegantly + +Explain: + +## How It Differs + +If similar entries exist, what makes this one unique? diff --git a/.gitignore b/.gitignore index af83fd5ca..096c327d6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,9 @@ .DS_Store + *.py[co] + +docs/index.md +site/ + +# PyCharm IDE +.idea diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..81d13417c --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,32 @@ +# CLAUDE.md + +## Repository Overview + +This is the awesome-python repository - a curated list of Python frameworks, libraries, software and resources. The repository serves as a comprehensive directory about Python ecosystem. + +## PR Review Guidelines + +**For all PR review tasks, refer to [CONTRIBUTING.md](CONTRIBUTING.md)** which contains: + +- Acceptance criteria (Industry Standard, Rising Star, Hidden Gem) +- Quality requirements +- Automatic rejection criteria +- Entry format reference +- PR description template + +## Architecture & Structure + +The repository follows a single-file architecture: + +- **README.md**: All content in hierarchical structure (categories, subcategories, entries) +- **CONTRIBUTING.md**: Submission guidelines and review criteria +- **sort.py**: Script to enforce alphabetical ordering + +Entry format: `* [project-name](url) - Concise description ending with period.` + +## Key Considerations + +- This is a curated list, not a code project +- Quality over quantity - only "awesome" projects +- Alphabetical ordering within categories is mandatory +- README.md is the source of truth for all content diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d9f68bd60..d5dd034b4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,15 +1,103 @@ # Contributing -Your contributions are always welcome! - -## Guidelines - -* Add section if needed. - * Add section description. - * Add section title to Table of contents. -* Search previous suggestions before making a new one, as yours may be a duplicate. -* Add your links: `* [project-name](http://example.com/) - A short description ends with a dot.` -* Don't mention `Python` in the description as it's implied. -* Check your spelling and grammar. -* Make sure your text editor is set to remove trailing whitespace. -* Send a Pull Request. +## Automatic Rejection + +PRs will be **closed** if: + +- Adding multiple projects in one PR +- Duplicate of existing entry or recently-closed PR +- Empty or placeholder PR descriptions +- Placed under an inappropriate category +- Project is archived or abandoned (no commits in 12+ months) +- No documentation or unclear use case +- Less than 100 GitHub stars without Hidden Gem justification +- Repository less than 3 months old + +## Quality Requirements + +All submissions must satisfy **ALL** of these: + +1. **Python-first**: Primarily written in Python (>50% of codebase) +2. **Active**: Commits within the last 12 months +3. **Stable**: Production-ready, not alpha/beta/experimental +4. **Documented**: Clear README with examples and use cases +5. **Unique**: Adds distinct value, not "yet another X" +6. **Established**: Repository at least 1 month old + +## Acceptance Criteria + +Your submission must meet **ONE** of the following criteria: + +### 1. Industry Standard + +- The go-to tool that almost everyone uses for a specific use case +- Examples: Requests, Flask, Pandas, NumPy +- Limit: 1-3 tools per category + +### 2. Rising Star + +- Rapid growth: 5,000+ GitHub stars in less than 2 years +- Significant community buzz and adoption +- Solving problems in new or better ways +- Examples: FastAPI, Ruff, uv + +### 3. Hidden Gem + +- Exceptional quality despite fewer stars (100-500 stars preferred; < 100 requires strong justification) +- Solves niche problems elegantly +- Strong recommendation from experienced developers +- **Must demonstrate real-world usage** (not a project published last week) +- Repository must be at least 6 months old with consistent activity +- Must include compelling justification in PR description + +## Entry Format Reference + +### Standard Entry + +```markdown +- [project-name](https://github.com/owner/repo) - Description ending with period. +``` + +### Standard Library Module + +```markdown +- [module](https://docs.python.org/3/library/module.html) - (Python standard library) Description. +``` + +### Fork of Another Project + +```markdown +- [new-name](https://github.com/owner/new-name) - Description ([original-name](original-url) fork). +``` + +### Entry with Related Awesome List + +```markdown +- [project](https://github.com/owner/project) - Description. + - [awesome-project](https://github.com/someone/awesome-project) +``` + +### Subcategory Format + +```markdown +- Subcategory Name + - [project](url) - Description. +``` + +## Adding a New Section + +1. Add section description in italics: `*Libraries for doing X.*` +2. Add the section title to the Table of Contents +3. Keep sections in alphabetical order + +## Review Process + +PRs are reviewed by automated tools and maintainers: + +1. **Format Check**: Entry follows the correct format +2. **Category Check**: Placed in the appropriate category/subcategory +3. **Duplicate Check**: Not already listed or previously rejected +4. **Activity Check**: Project shows recent activity +5. **Quality Check**: Meets acceptance criteria + +Search previous Pull Requests and Issues before submitting, as yours may be a duplicate. diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..81901d37c --- /dev/null +++ b/LICENSE @@ -0,0 +1,3 @@ +Creative Commons Attribution 4.0 International License (CC BY 4.0) + +http://creativecommons.org/licenses/by/4.0/ diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..eda7a8ff3 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +site_install: + pip install -r requirements.txt + +site_link: + ln -sf $(CURDIR)/README.md $(CURDIR)/docs/index.md + +site_preview: site_link + mkdocs serve + +site_build: site_link + mkdocs build + +site_deploy: site_link + mkdocs gh-deploy --clean diff --git a/README.md b/README.md index b6ed6add6..9f34e2250 100644 --- a/README.md +++ b/README.md @@ -1,1145 +1,1216 @@ # Awesome Python -A curated list of awesome Python frameworks, libraries and software. Inspired by [awesome-php](https://github.com/ziadoz/awesome-php). - -- [Awesome Python](#awesome-python) - - [Environment Management](#environment-management) - - [Package Management](#package-management) - - [Package Repositories](#package-repositories) - - [Distribution](#distribution) - - [Build Tools](#build-tools) - - [Interactive Interpreter](#interactive-interpreter) - - [Files](#files) - - [Date and Time](#date-and-time) - - [Text Processing](#text-processing) - - [Specific Formats Processing](#specific-formats-processing) - - [Natural Language Processing](#natural-language-processing) - - [Documentation](#documentation) - - [Configuration](#configuration) - - [Command-line Tools](#command-line-tools) - - [Downloader](#downloader) - - [Imagery](#imagery) - - [OCR](#ocr) - - [Audio](#audio) - - [Video](#video) - - [Geolocation](#geolocation) - - [HTTP](#http) - - [Database](#database) - - [Database Drivers](#database-drivers) - - [ORM](#orm) - - [Web Frameworks](#web-frameworks) - - [Permissions](#permissions) - - [CMS](#cms) - - [E-commerce](#e-commerce) - - [RESTful API](#restful-api) - - [Authentication](#authentication) - - [Template Engine](#template-engine) - - [Queue](#queue) - - [Search](#search) - - [News Feed](#news-feed) - - [Asset Management](#asset-management) - - [Caching](#caching) - - [Email](#email) - - [Internationalization](#internationalization) - - [URL Manipulation](#url-manipulation) - - [HTML Manipulation](#html-manipulation) - - [Web Crawling](#web-crawling) - - [Web Content Extracting](#web-content-extracting) - - [Forms](#forms) - - [Data Validation](#data-validation) - - [Anti-spam](#anti-spam) - - [Tagging](#tagging) - - [Admin Panels](#admin-panels) - - [Static Site Generator](#static-site-generator) - - [Processes and Threads](#processes-and-threads) - - [Concurrency and Networking](#concurrency-and-networking) - - [WebSocket](#websocket) - - [WSGI Servers](#wsgi-servers) - - [RPC Servers](#rpc-servers) - - [Cryptography](#cryptography) - - [GUI](#gui) - - [Game Development](#game-development) - - [Logging](#logging) - - [Testing](#testing) - - [Code Analysis and Linter](#code-analysis-and-linter) - - [Debugging Tools](#debugging-tools) - - [Science and Data Analysis](#science-and-data-analysis) - - [Data Visualization](#data-visualization) - - [Computer Vision](#computer-vision) - - [Machine Learning](#machine-learning) - - [Functional Programming](#functional-programming) - - [MapReduce](#mapreduce) - - [Third-party APIs](#third-party-apis) - - [DevOps Tools](#devops-tools) - - [Job Scheduler](#job-scheduler) - - [Foreign Function Interface](#foreign-function-interface) - - [High Performance](#high-performance) - - [Network Virtualization and SDN](#network-virtualization-and-sdn) - - [Hardware](#hardware) - - [Compatibility](#compatibility) - - [Miscellaneous](#miscellaneous) - - [Algorithms and Design Patterns](#algorithms-and-design-patterns) - - [Editor Plugins](#editor-plugins) +An opinionated list of awesome Python frameworks, libraries, software and resources. + +> The **#10 most-starred repo on GitHub**. Put your product where Python developers discover tools. [Become a sponsor](SPONSORSHIP.md). + +# Categories + +- [Admin Panels](#admin-panels) +- [Algorithms and Design Patterns](#algorithms-and-design-patterns) +- [ASGI Servers](#asgi-servers) +- [Asynchronous Programming](#asynchronous-programming) +- [Audio](#audio) +- [Authentication](#authentication) +- [Build Tools](#build-tools) +- [Built-in Classes Enhancement](#built-in-classes-enhancement) +- [Caching](#caching) +- [CMS](#cms) +- [Code Analysis](#code-analysis) +- [Command-line Interface Development](#command-line-interface-development) +- [Command-line Tools](#command-line-tools) +- [Computer Vision](#computer-vision) +- [Configuration Files](#configuration-files) +- [Cryptography](#cryptography) +- [Data Analysis](#data-analysis) +- [Data Validation](#data-validation) +- [Data Visualization](#data-visualization) +- [Database Drivers](#database-drivers) +- [Database](#database) +- [Date and Time](#date-and-time) +- [Debugging Tools](#debugging-tools) +- [Deep Learning](#deep-learning) +- [DevOps Tools](#devops-tools) +- [Distributed Computing](#distributed-computing) +- [Distribution](#distribution) +- [Documentation](#documentation) +- [Downloader](#downloader) +- [Editor Plugins and IDEs](#editor-plugins-and-ides) +- [Email](#email) +- [Environment Management](#environment-management) +- [File Manipulation](#file-manipulation) +- [Functional Programming](#functional-programming) +- [Game Development](#game-development) +- [Geolocation](#geolocation) +- [GUI Development](#gui-development) +- [Hardware](#hardware) +- [HTML Manipulation](#html-manipulation) +- [HTTP Clients](#http-clients) +- [Image Processing](#image-processing) +- [Implementations](#implementations) +- [Interactive Interpreter](#interactive-interpreter) +- [Internationalization](#internationalization) +- [Job Scheduler](#job-scheduler) +- [Logging](#logging) +- [Machine Learning](#machine-learning) +- [Miscellaneous](#miscellaneous) +- [Natural Language Processing](#natural-language-processing) +- [Network Virtualization](#network-virtualization) +- [ORM](#orm) +- [Package Management](#package-management) +- [Package Repositories](#package-repositories) +- [Penetration testing](#penetration-testing) +- [Permissions](#permissions) +- [Processes](#processes) +- [Quantum Computing](#quantum-computing) +- [Recommender Systems](#recommender-systems) +- [Refactoring](#refactoring) +- [RESTful API](#restful-api) +- [Robotics](#robotics) +- [RPC Servers](#rpc-servers) +- [Science](#science) +- [Search](#search) +- [Serialization](#serialization) +- [Serverless Frameworks](#serverless-frameworks) +- [Shell](#shell) +- [Specific Formats Processing](#specific-formats-processing) +- [Static Site Generator](#static-site-generator) +- [Task Queues](#task-queues) +- [Template Engine](#template-engine) +- [Testing](#testing) +- [Text Processing](#text-processing) +- [URL Manipulation](#url-manipulation) +- [Video](#video) +- [Web Asset Management](#web-asset-management) +- [Web Content Extracting](#web-content-extracting) +- [Web Crawling](#web-crawling) +- [Web Frameworks](#web-frameworks) +- [WebSocket](#websocket) +- [WSGI Servers](#wsgi-servers) - [Resources](#resources) - - [Websites](#websites) - - [Weekly](#weekly) - - [Twitter](#twitter) -- [Other Awesome Lists](#other-awesome-lists) -- [Contributing](#contributing) + - [Newsletters](#newsletters) + - [Podcasts](#podcasts) --- -## Environment Management - -*Libraries for Python version and environment management.* - -* [pyenv](https://github.com/yyuu/pyenv) - Simple Python version management. -* [virtualenv](https://pypi.python.org/pypi/virtualenv) - A tool to create isolated Python environments. -* [virtualenvwrapper](https://pypi.python.org/pypi/virtualenvwrapper) - A set of extensions to virtualenv. -* [virtualenv-api](https://github.com/sjkingo/virtualenv-api) - An API for virtualenv and pip. -* [pew](https://pypi.python.org/pypi/pew/) - A set of tools to manage multiple virtual environments. -* [Vex](https://github.com/sashahart/vex) - Run a command in the named virtualenv. -* [PyRun](https://www.egenix.com/products/python/PyRun/) - A one-file, no-installation-needed version of Python. - -## Package Management - -*Libraries for package and dependency management.* - -* [pip](https://pip.pypa.io/) - The Python package and dependency manager. - * [Python Package Index](https://pypi.python.org/pypi) -* [conda](https://github.com/conda/conda/) - Cross-platform, Python-agnostic binary package manager. -* [Curdling](http://clarete.li/curdling/) - Curdling is a command line tool for managing Python packages. -* [wheel](http://pythonwheels.com/) - The new standard of Python distribution and are intended to replace eggs. - -## Package Repositories - -*Local PyPI repository server and proxies.* - -* [warehouse](https://github.com/pypa/warehouse) - Next generation Python Package Repository (PyPI). - * [Warehouse](https://warehouse.python.org/) -* [devpi](http://doc.devpi.net/) - PyPI server and packaging/testing/release tool. -* [localshop](https://github.com/mvantellingen/localshop) - PyPI server which mirrors official packages on-demand, and also supports local (private) package uploads. - -## Distribution +## Admin Panels -*Libraries to create packaged executables for release distribution.* +_Libraries for administrative interfaces._ -* [cx-Freeze](http://cx-freeze.readthedocs.org/) - Freezes Python scripts (cross-platform). -* [py2exe](http://www.py2exe.org/) - Freezes Python scripts (Windows). -* [pynsist](http://pynsist.readthedocs.org/) - A tool to build Windows installers, installers bundle Python itself. -* [py2app](http://pythonhosted.org/py2app/) - Freezes Python scripts (Mac OS X). -* [PyInstaller](http://www.pyinstaller.org/) - Converts Python programs into stand-alone executables (cross-platform). -* [dh-virtualenv](http://dh-virtualenv.readthedocs.org/) - Build and distribute a virtualenv as a Debian package. -* [Nuitka](http://nuitka.net/) - Compile scripts, modules, packages to an executable or extension module. +- [ajenti](https://github.com/ajenti/ajenti) - The admin panel your servers deserve. +- [django-grappelli](https://github.com/sehmaschine/django-grappelli) - A jazzy skin for the Django Admin-Interface. +- [django-unfold](https://github.com/unfoldadmin/django-unfold) - Elevate your Django admin with a stunning modern interface, powerful features, and seamless user experience. +- [flask-admin](https://github.com/flask-admin/flask-admin) - Simple and extensible administrative interface framework for Flask. +- [flower](https://github.com/mher/flower) - Real-time monitor and web admin for Celery. +- [func-to-web](https://github.com/offerrall/FuncToWeb) - Instantly create web UIs from Python functions using type hints. Zero frontend code required. +- [jet-bridge](https://github.com/jet-admin/jet-bridge) - Admin panel framework for any application with nice UI (ex Jet Django). +- [streamlit](https://github.com/streamlit/streamlit) - A framework which lets you build dashboards, generate reports, or create chat apps in minutes. +- [wooey](https://github.com/wooey/wooey) - A Django app which creates automatic web UIs for Python scripts. -## Build Tools +## Algorithms and Design Patterns -*Compile software from source code.* +_Python implementation of data structures, algorithms and design patterns. Also see [awesome-algorithms](https://github.com/tayllan/awesome-algorithms)._ -* [buildout](http://www.buildout.org/) - A build system for creating, assembling and deploying applications from multiple parts, some of which may be non-Python-based. -* [SCons](http://www.scons.org/) - A software construction tool. -* [PlatformIO](https://github.com/ivankravets/platformio) - A console tool to build code with different development platforms. -* [BitBake](http://www.yoctoproject.org/docs/1.6/bitbake-user-manual/bitbake-user-manual.html) - A make-like build tool with the special focus of distributions and packages for embedded Linux. -* [fabricate](https://code.google.com/p/fabricate/) - A build tool that finds dependencies automatically for any language. +- Algorithms + - [algorithms](https://github.com/keon/algorithms) - Minimal examples of data structures and algorithms. + - [python-ds](https://github.com/prabhupant/python-ds) - A collection of data structure and algorithms for coding interviews. + - [sortedcontainers](https://github.com/grantjenks/python-sortedcontainers) - Fast and pure-Python implementation of sorted collections. + - [thealgorithms](https://github.com/TheAlgorithms/Python) - All Algorithms implemented in Python. +- Design Patterns + - [python-cqrs](https://github.com/vadikko2/python-cqrs) - Event-Driven Architecture Framework with CQRS/CQS, Transaction Outbox, Saga orchestration. + - [python-patterns](https://github.com/faif/python-patterns) - A collection of design patterns in Python. + - [transitions](https://github.com/pytransitions/transitions) - A lightweight, object-oriented finite state machine implementation. -## Interactive Interpreter +## ASGI Servers -*Interactive Python interpreters.* +_[ASGI](https://asgi.readthedocs.io/en/latest/)-compatible web servers._ -* [IPython](https://github.com/ipython/ipython) - A rich toolkit to help you make the most out of using Python interactively. -* [bpython](http://bpython-interpreter.org) – A fancy interface to the Python interpreter. -* [python-prompt-toolkit](https://github.com/jonathanslenders/python-prompt-toolkit) - A Library for building powerful interactive command lines. +- [daphne](https://github.com/django/daphne) - A HTTP, HTTP2 and WebSocket protocol server for ASGI and ASGI-HTTP. +- [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. +- [uvicorn](https://github.com/encode/uvicorn) - A lightning-fast ASGI server implementation, using uvloop and httptools. -## Files +## Asynchronous Programming -*Libraries for file manipulation and MIME type detection.* +_Libraries for asynchronous, concurrent and parallel execution. Also see [awesome-asyncio](https://github.com/timofurrer/awesome-asyncio)._ -* [mimetypes](https://docs.python.org/2/library/mimetypes.html) - (Python standard library) Map filenames to MIME types. -* [imghdr](https://docs.python.org/2/library/imghdr.html) - (Python standard library) Determine the type of an image. -* [python-magic](https://github.com/ahupp/python-magic) - A Python interface to the libmagic file type identification library. -* [path.py](https://github.com/jaraco/path.py) - A module wrapper for [os.path](https://docs.python.org/2/library/os.path.html). -* [watchdog](https://github.com/gorakhargosh/watchdog) - API and shell utilities to monitor file system events. -* [Unipath](https://github.com/mikeorr/Unipath) - An object-oriented approach to file/directory operations. -* [pathlib](https://pathlib.readthedocs.org/en/pep428/) - (Python standard library in Python 3.4+) An cross-platform, object-oriented path library. +- [asyncio](https://docs.python.org/3/library/asyncio.html) - (Python standard library) Asynchronous I/O, event loop, coroutines and tasks. + - [awesome-asyncio](https://github.com/timofurrer/awesome-asyncio) +- [concurrent.futures](https://docs.python.org/3/library/concurrent.futures.html) - (Python standard library) A high-level interface for asynchronously executing callables. +- [gevent](https://github.com/gevent/gevent) - A coroutine-based Python networking library that uses [greenlet](https://github.com/python-greenlet/greenlet). +- [multiprocessing](https://docs.python.org/3/library/multiprocessing.html) - (Python standard library) Process-based parallelism. +- [trio](https://github.com/python-trio/trio) - A friendly library for async concurrency and I/O. +- [twisted](https://github.com/twisted/twisted) - An event-driven networking engine. +- [uvloop](https://github.com/MagicStack/uvloop) - Ultra fast asyncio event loop. -## Date and Time +## Audio -*Libraries for working with dates and times.* +_Libraries for manipulating audio and its metadata._ + +- Audio + - [audioFlux](https://github.com/libAudioFlux/audioFlux) - A library for audio and music analysis, feature extraction. + - [audioread](https://github.com/beetbox/audioread) - Cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding. + - [dejavu](https://github.com/worldveil/dejavu) - Audio fingerprinting and recognition. + - [gTTS](https://github.com/pndurette/gTTS) - Python library and CLI tool for converting text to speech using Google Translate TTS. + - [kapre](https://github.com/keunwoochoi/kapre) - Keras Audio Preprocessors. + - [librosa](https://github.com/librosa/librosa) - Python library for audio and music analysis. + - [matchering](https://github.com/sergree/matchering) - A library for automated reference audio mastering. + - [mingus](http://bspaans.github.io/python-mingus/) - An advanced music theory and notation package with MIDI file and playback support. + - [pyaudioanalysis](https://github.com/tyiannak/pyAudioAnalysis) - Audio feature extraction, classification, segmentation and applications. + - [pydub](https://github.com/jiaaro/pydub) - Manipulate audio with a simple and easy high level interface. + - [timeside](https://github.com/Parisson/TimeSide) - Open web audio processing framework. +- Metadata + - [beets](https://github.com/beetbox/beets) - A music library manager and [MusicBrainz](https://musicbrainz.org/) tagger. + - [eyed3](https://github.com/nicfit/eyeD3) - A tool for working with audio files, specifically MP3 files containing ID3 metadata. + - [mutagen](https://github.com/quodlibet/mutagen) - A Python module to handle audio metadata. + - [tinytag](https://github.com/devsnd/tinytag) - A library for reading music meta data of MP3, OGG, FLAC and Wave files. -* [arrow](https://github.com/crsmithdev/arrow) - Better dates & times for Python. -* [Chronyk](https://github.com/KoffeinFlummi/Chronyk) - A Python 3 library for parsing human-written times and dates. -* [dateutil](https://pypi.python.org/pypi/python-dateutil) - Extensions to the standard Python [datetime](https://docs.python.org/2/library/datetime.html) module. -* [delorean](https://github.com/myusuf3/delorean/) - A library for clearing up the inconvenient truths that arise dealing with datetimes. -* [when.py](https://github.com/dirn/When.py) - Providing user-friendly functions to help perform common date and time actions. -* [moment](https://github.com/zachwill/moment) - A Python library for dealing with dates/times. Inspired by [Moment.js](http://momentjs.com/). -* [pytz](https://launchpad.net/pytz) - World timezone definitions, modern and historical. Brings the [tz database](http://en.wikipedia.org/wiki/Tz_database) into Python. +## Authentication -## Text Processing +_Libraries for implementing authentication schemes._ -*Libraries for parsing and manipulating plain texts.* - -* General - * [difflib](https://docs.python.org/2/library/difflib.html) - (Python standard library) Helpers for computing deltas. - * [Levenshtein](https://github.com/ztane/python-Levenshtein/) - Fast computation of Levenshtein distance and string similarity. - * [fuzzywuzzy](https://github.com/seatgeek/fuzzywuzzy) - Fuzzy String Matching. - * [esmre](https://code.google.com/p/esmre/) - Regular expression accelerator. - * [shortuuid](https://github.com/stochastic-technologies/shortuuid) - A generator library for concise, unambiguous and URL-safe UUIDs. - * [ftfy](https://github.com/LuminosoInsight/python-ftfy) - Makes Unicode text less broken and more consistent automagically. - * [unidecode](https://pypi.python.org/pypi/Unidecode) - ASCII transliterations of Unicode text. - * [chardet](https://github.com/chardet/chardet) - Python 2/3 compatible character encoding detector. - * [xpinyin](https://github.com/lxneng/xpinyin) - A library to translate Chinese hanzi (漢字) to pinyin (拼音). - * [pangu.py](https://github.com/vinta/pangu.py) - Spacing texts for CJK and alphanumerics. - * [pyfiglet](https://github.com/pwaller/pyfiglet) - An implementation of figlet written in Python. - * [uniout](https://github.com/moskytw/uniout) - Print readable chars instead of the escaped string. -* Slugify - * [awesome-slugify](https://github.com/dimka665/awesome-slugify) - A Python slugify library that can preserve unicode. - * [python-slugify](https://github.com/un33k/python-slugify) - A Python slugify library that translates unicode to ASCII. - * [unicode-slugify](https://github.com/mozilla/unicode-slugify) - A slugifier that generates unicode slugs with Django as a dependency. -* Parser - * [PLY](http://www.dabeaz.com/ply/) - Implementation of lex and yacc parsing tools for Python - * [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) - Parsing, formatting, storing and validating international phone numbers. - * [python-user-agents](https://github.com/selwin/python-user-agents) - Browser user agent parser. - * [sqlparse](https://sqlparse.readthedocs.org/) - A non-validating SQL parser. - * [Pygments](http://pygments.org/) - A generic syntax highlighter. - * [python-nameparser](https://github.com/derek73/python-nameparser) - Parsing human names into their individual components. - * [pyparsing](http://pyparsing.wikispaces.com/) - A general purpose framework for generating parsers. +- OAuth + - [authlib](https://github.com/lepture/authlib) - JavaScript Object Signing and Encryption draft implementation. + - [django-allauth](https://github.com/pennersr/django-allauth) - Authentication app for Django that "just works." + - [django-oauth-toolkit](https://github.com/jazzband/django-oauth-toolkit) - OAuth 2 goodies for Django. + - [oauthlib](https://github.com/oauthlib/oauthlib) - A generic and thorough implementation of the OAuth request-signing logic. +- JWT + - [pyjwt](https://github.com/jpadilla/pyjwt) - JSON Web Token implementation in Python. + - [python-jose](https://github.com/mpdavis/python-jose/) - A JOSE implementation in Python. -## Specific Formats Processing +## Build Tools -*Libraries for parsing and manipulating specific text formats.* - -* General - * [tablib](https://github.com/kennethreitz/tablib) - A module for Tabular Datasets in XLS, CSV, JSON, YAML. -* Office - * [python-docx](https://github.com/python-openxml/python-docx) - Reads, queries and modifies Microsoft Word 2007/2008 docx files. - * [xlwt](https://github.com/python-excel/xlwt) / [xlrd](https://github.com/python-excel/xlrd) - Writing and reading data and formatting information from Excel files. - * [XlsxWriter](https://xlsxwriter.readthedocs.org/) - A Python module for creating Excel .xlsx files. - * [xlwings](http://xlwings.org/) - A BSD-licensed library that makes it easy to call Python from Excel and vice versa. - * [Marmir](https://github.com/brianray/mm) - Takes Python data structures and turns them into spreadsheets. -* PDF - * [PDFMiner](https://github.com/euske/pdfminer) - A tool for extracting information from PDF documents. - * [PyPDF2](https://github.com/mstamy2/PyPDF2) - A library capable of splitting, merging and transforming PDF pages. -* Markdown - * [Python-Markdown](https://github.com/waylan/Python-Markdown) - A Python implementation of John Gruber’s Markdown. - * [Mistune](https://github.com/lepture/mistune) - Fastest and full featured pure Python parsers of Markdown. -* YAML - * [PyYAML](http://pyyaml.org/) - YAML implementations for Python. -* CSV - * [csvkit](https://github.com/onyxfish/csvkit) - Utilities for converting to and working with CSV. -* Archive - * [unp](https://github.com/mitsuhiko/unp) - A command line tool that can unpack archives easily. +_Compile software from source code._ -## Natural Language Processing +- [bitbake](https://github.com/openembedded/bitbake) - A make-like build tool for embedded Linux. +- [buildout](https://github.com/buildout/buildout) - A build system for creating, assembling and deploying applications from multiple parts. +- [platformio](https://github.com/platformio/platformio-core) - A console tool to build code with different development platforms. +- [pybuilder](https://github.com/pybuilder/pybuilder) - A continuous build tool written in pure Python. +- [scons](https://github.com/SCons/scons) - A software construction tool. -*Libraries for working with human languages.* +## Built-in Classes Enhancement -* [NLTK](http://www.nltk.org/) - A leading platform for building Python programs to work with human language data. -* [Pattern](http://www.clips.ua.ac.be/pattern) - A web mining module for the Python. It has tools for natural language processing, machine learning, among others. -* [TextBlob](http://textblob.readthedocs.org/) - Providing a consistent API for diving into common NLP tasks. Stands on the giant shoulders of NLTK and Pattern. -* [jieba](https://github.com/fxsjy/jieba) - Chinese Words Segmentation Utilities. -* [SnowNLP](https://github.com/isnowfy/snownlp) - A library for processing Chinese text. -* [loso](https://github.com/victorlin/loso) - Another Chinese segmentation library. -* [genius](https://github.com/duanhongyi/genius) - A Chinese segment base on Conditional Random Field. +_Libraries for enhancing Python built-in classes._ -## Documentation +- [attrs](https://github.com/python-attrs/attrs) - Replacement for `__init__`, `__eq__`, `__repr__`, etc. boilerplate in class definitions. +- [bidict](https://github.com/jab/bidict) - Efficient, Pythonic bidirectional map data structures and related functionality. +- [box](https://github.com/cdgriffith/Box) - Python dictionaries with advanced dot notation access. +- [dataclasses](https://docs.python.org/3/library/dataclasses.html) - (Python standard library) Data classes. +- [dotteddict](https://github.com/carlosescri/DottedDict) - A library that provides a method of accessing lists and dicts with a dotted path notation. -*Libraries for generating project documentation.* +## CMS -* [Sphinx](http://sphinx-doc.org/) - Python Documentation generator. - * [awesome-sphinxdoc](https://github.com/yoloseem/awesome-sphinxdoc) -* [reStructuredText](http://docutils.sourceforge.net/rst.html) - Markup Syntax and Parser Component of Docutils. -* [MkDocs](http://www.mkdocs.org/) - Markdown friendly documentation generator. -* [Pycco](http://fitzgen.github.io/pycco/) - The original quick-and-dirty, hundred-line-long, literate-programming-style documentation generator. -* [pdoc](https://github.com/BurntSushi/pdoc) - Epydoc replacement to auto generate API documentation for Python libraries. +_Content Management Systems._ -## Configuration +- [feincms](https://github.com/feincms/feincms) - One of the most advanced Content Management Systems built on Django. +- [indico](https://github.com/indico/indico) - A feature-rich event management system, made @ [CERN](https://en.wikipedia.org/wiki/CERN). +- [wagtail](https://github.com/wagtail/wagtail) - A Django content management system. -*Libraries for storing configuration options.* +## Caching -* [ConfigParser](https://docs.python.org/2/library/configparser.html) - (Python standard library) INI file parser. -* [ConfigObj](http://www.voidspace.org.uk/python/configobj.html) - INI file parser with validation. -* [config](http://www.red-dove.com/config-doc/) - Hierarchical config from the author of [logging](https://docs.python.org/2/library/logging.html). -* [profig](http://profig.readthedocs.org/) - Config from multiple formats with value conversion. +_Libraries for caching data._ + +- [beaker](https://github.com/bbangert/beaker) - A WSGI middleware for sessions and caching. +- [django-cache-machine](https://github.com/django-cache-machine/django-cache-machine) - Automatic caching and invalidation for Django models. +- [django-cacheops](https://github.com/Suor/django-cacheops) - A slick ORM cache with automatic granular event-driven invalidation. +- [dogpile.cache](https://github.com/sqlalchemy/dogpile.cache) - dogpile.cache is a next generation replacement for Beaker made by the same authors. +- [hermescache](https://pypi.org/project/HermesCache/) - Python caching library with tag-based invalidation and dogpile effect prevention. +- [pylibmc](https://github.com/lericson/pylibmc) - A Python wrapper around the [libmemcached](https://libmemcached.org/libMemcached.html) interface. +- [python-diskcache](https://github.com/grantjenks/python-diskcache) - SQLite and file backed cache backend with faster lookups than memcached and redis. + +## Code Analysis + +_Tools of static analysis, linters and code quality checkers. Also see [awesome-static-analysis](https://github.com/mre/awesome-static-analysis)._ + +- Code Analysis + - [code-graph-rag](https://github.com/vitali87/code-graph-rag) - Builds knowledge graphs from multi-language codebases using Tree-sitter and Memgraph, enabling natural language querying of code structure. + - [code2flow](https://github.com/scottrogowski/code2flow) - Turn your Python and JavaScript code into DOT flowcharts. + - [prospector](https://github.com/PyCQA/prospector) - A tool to analyze Python code. + - [vulture](https://github.com/jendrikseipp/vulture) - A tool for finding and analyzing dead Python code. +- Code Linters + - [flake8](https://github.com/PyCQA/flake8) - A wrapper around `pycodestyle`, `pyflakes` and McCabe. + - [awesome-flake8-extensions](https://github.com/DmytroLitvinov/awesome-flake8-extensions) + - [pylint](https://github.com/pylint-dev/pylint) - A fully customizable source code analyzer. + - [ruff](https://github.com/astral-sh/ruff) - An extremely fast Python linter and code formatter. +- Code Formatters + - [black](https://github.com/psf/black) - The uncompromising Python code formatter. + - [isort](https://github.com/timothycrosley/isort) - A Python utility / library to sort imports. + - [yapf](https://github.com/google/yapf) - Yet another Python code formatter from Google. +- Static Type Checkers, also see [awesome-python-typing](https://github.com/typeddjango/awesome-python-typing) + - [mypy](https://github.com/python/mypy) - Check variable types during compile time. + - [pyre-check](https://github.com/facebook/pyre-check) - Performant type checking. + - [ty](https://github.com/astral-sh/ty) - An extremely fast Python type checker and language server. + - [typeshed](https://github.com/python/typeshed) - Collection of library stubs for Python, with static types. +- Static Type Annotations Generators + - [monkeytype](https://github.com/Instagram/MonkeyType) - A system for Python that generates static type annotations by collecting runtime types. + - [pytype](https://github.com/google/pytype) - Pytype checks and infers types for Python code - without requiring type annotations. + +## Command-line Interface Development + +_Libraries for building command-line applications._ + +- Command-line Application Development + - [argparse](https://docs.python.org/3/library/argparse.html) - (Python standard library) Command-line option and argument parsing. + - [cement](https://github.com/datafolklabs/cement) - CLI Application Framework for Python. + - [click](https://github.com/pallets/click/) - A package for creating beautiful command line interfaces in a composable way. + - [cliff](https://github.com/openstack/cliff) - A framework for creating command-line programs with multi-level commands. + - [python-fire](https://github.com/google/python-fire) - A library for creating command line interfaces from absolutely any Python object. + - [python-prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) - A library for building powerful interactive command lines. + - [Typer](https://github.com/tiangolo/typer) - Modern CLI framework that uses Python type hints. Built on Click and Pydantic. +- Terminal Rendering + - [alive-progress](https://github.com/rsalmei/alive-progress) - A new kind of Progress Bar, with real-time throughput, eta and very cool animations. + - [asciimatics](https://github.com/peterbrittain/asciimatics) - A package to create full-screen text UIs (from interactive forms to ASCII animations). + - [bashplotlib](https://github.com/glamp/bashplotlib) - Making basic plots in the terminal. + - [colorama](https://github.com/tartley/colorama) - Cross-platform colored terminal text. + - [rich](https://github.com/Textualize/rich) - Python library for rich text and beautiful formatting in the terminal. Also provides a great `RichHandler` log handler. + - [textual](https://github.com/Textualize/textual) - A framework for building interactive user interfaces that run in the terminal and the browser. + - [tqdm](https://github.com/tqdm/tqdm) - Fast, extensible progress bar for loops and CLI. ## Command-line Tools -*Libraries for building command-line application.* - -* Command-line Application Development - * [cement](http://builtoncement.com/) - Cement provides a light-weight and fully featured foundation to build anything from single file scripts to complex and intricately designed applications. - * [click](http://click.pocoo.org/) - A package for creating beautiful command line interfaces in a composable way. - * [clint](https://github.com/kennethreitz/clint) - Python Command-line Application Tools. - * [cliff](https://cliff.readthedocs.org/) - A framework for creating command-line programs with multi-level commands. - * [Clime](http://clime.mosky.tw) – Clime lets you convert any module into a multi-command CLI program without any configuration. - * [docopt](http://docopt.org/) - Pythonic command line arguments parser. - * [colorama](https://pypi.python.org/pypi/colorama) - Cross-platform colored terminal text. - * [pyCLI](https://pythonhosted.org/pyCLI/) - Command-line applications supporting standard command line parsing, logging, unit and functional testing. - * [Gooey](https://github.com/chriskiehl/Gooey) - Turn command line programs into a full GUI application with one line -* Productivity Tools - * [cookiecutter](https://github.com/audreyr/cookiecutter) - A command-line utility that creates projects from cookiecutters (project templates). E.g. Python package projects, jQuery plugin projects. - * [httpie](https://github.com/jakubroztocil/httpie) - A command line HTTP client, a user-friendly cURL replacement. - * [percol](https://github.com/mooz/percol) - Adds flavor of interactive selection to the traditional pipe concept on UNIX. - * [RainbowStream](http://www.rainbowstream.org/) - Smart and nice Twitter client on terminal. - * [caniusepython3](https://github.com/brettcannon/caniusepython3) - Determine what projects are blocking you from porting to Python 3. - -## Downloader - -*Libraries for downloading.* +_Useful CLI-based tools for productivity._ + +- Productivity Tools + - [ccb](https://github.com/bfly123/claude_code_bridge) - A CLI tool to orchestrate multiple LLMs (Claude, Gemini, etc.) in Tmux panes with cross-agent interaction. + - [cookiecutter](https://github.com/cookiecutter/cookiecutter) - A command-line utility that creates projects from cookiecutters (project templates). + - [copier](https://github.com/copier-org/copier) - A library and command-line utility for rendering projects templates. + - [doitlive](https://github.com/sloria/doitlive) - A tool for live presentations in the terminal. + - [howdoi](https://github.com/gleitz/howdoi) - Instant coding answers via the command line. + - [invoke](https://github.com/pyinvoke/invoke) - A tool for managing shell-oriented subprocesses and organizing executable Python code into CLI-invokable tasks. + - [pathpicker](https://github.com/facebook/PathPicker) - Select files out of bash output. + - [thefuck](https://github.com/nvbn/thefuck) - Correcting your previous console command. + - [tmuxp](https://github.com/tmux-python/tmuxp) - A [tmux](https://github.com/tmux/tmux) session manager. + - [try](https://github.com/timofurrer/try) - A dead simple CLI to try out python packages - it's never been easier. +- CLI Enhancements + - [httpie](https://github.com/httpie/cli) - A command line HTTP client, a user-friendly cURL replacement. + - [iredis](https://github.com/laixintao/iredis) - Redis CLI with autocompletion and syntax highlighting. + - [litecli](https://github.com/dbcli/litecli) - SQLite CLI with autocompletion and syntax highlighting. + - [mycli](https://github.com/dbcli/mycli) - MySQL CLI with autocompletion and syntax highlighting. + - [pgcli](https://github.com/dbcli/pgcli) - PostgreSQL CLI with autocompletion and syntax highlighting. -* [s3cmd](https://github.com/s3tools/s3cmd) - A command line tool for managing Amazon S3 and CloudFront. -* [youtube-dl](http://rg3.github.io/youtube-dl/) - A small command-line program to download videos from YouTube. -* [you-get](http://www.soimort.org/you-get/) - A YouTube/Youku/Niconico video downloader written in Python 3. -* [coursera](https://github.com/coursera-dl/coursera) - Script for downloading Coursera.org videos and naming them. -* [WikiTeam](https://github.com/WikiTeam/wikiteam) - Tools for downloading and preserving wikis. -* [subliminal](https://github.com/Diaoul/subliminal) - Library and command line tool to search and download subtitles. - -## Imagery - -*Libraries for manipulating images.* +## Computer Vision -* [pillow](http://pillow.readthedocs.org/) - Pillow is the friendly [PIL](http://www.pythonware.com/products/pil/) fork. -* [wand](https://github.com/dahlia/wand) - Python bindings for [MagickWand](http://www.imagemagick.org/script/magick-wand.php), C API for ImageMagick. -* [thumbor](https://github.com/thumbor/thumbor) - A smart imaging service. It enables on-demand crop, resizing and flipping of images. -* [imgSeek](http://www.imgseek.net/) - A project for searching a collection of images using visual similarity. -* [python-qrcode](https://github.com/lincolnloop/python-qrcode) - A pure Python QR Code generator. -* [pyBarcode](https://pythonhosted.org/pyBarcode/) - Create barcodes in Python without needing PIL. -* [pygram](https://github.com/ajkumar25/pygram) - Instagram-like image filters. -* [Quads](https://github.com/fogleman/Quads) - Computer art based on quadtrees. -* [nude.py](https://github.com/hhatto/nude.py) - Nudity detection. -* [scikit-image](http://scikit-image.org/) - A Python library for (scientific) image processing. -* [hmap](https://github.com/rossgoodwin/hmap) - Image histogram remapping. +_Libraries for Computer Vision._ -## OCR +- [easyocr](https://github.com/JaidedAI/EasyOCR) - Ready-to-use OCR with 40+ languages supported. +- [kornia](https://github.com/kornia/kornia/) - Open Source Differentiable Computer Vision Library for PyTorch. +- [opencv](https://opencv.org/) - Open Source Computer Vision Library. +- [pytesseract](https://github.com/madmaze/pytesseract) - A wrapper for [Google Tesseract OCR](https://github.com/tesseract-ocr). +- [tesserocr](https://github.com/sirfz/tesserocr) - Another simple, Pillow-friendly, wrapper around the `tesseract-ocr` API for OCR. -*Libraries for Optical Character Recognition.* +## Configuration Files -* [python-tesseract] (https://code.google.com/p/python-tesseract) - A wrapper class for [Google Tesseract OCR](https://code.google.com/p/tesseract-ocr/). -* [pytesseract](https://github.com/madmaze/pytesseract) - Another wrapper for Google Tesseract OCR. -* [pyocr](https://github.com/jflesch/pyocr) - A wrapper for Tesseract and Cuneiform. +_Libraries for storing and parsing configuration options._ -## Audio +- [configobj](https://github.com/DiffSK/configobj) - INI file parser with validation. +- [configparser](https://docs.python.org/3/library/configparser.html) - (Python standard library) INI file parser. +- [dynaconf](https://github.com/dynaconf/dynaconf) - Dynaconf is a configuration manager with plugins for Django, Flask and FastAPI. +- [hydra](https://github.com/facebookresearch/hydra) - Hydra is a framework for elegantly configuring complex applications. +- [python-decouple](https://github.com/HBNetwork/python-decouple) - Strict separation of settings from code. -*Libraries for manipulating audio.* - -* [audiolazy](https://github.com/danilobellini/audiolazy) - Expressive Digital Signal Processing (DSP) package for Python. -* [audioread](https://github.com/sampsyo/audioread) - Cross-library (GStreamer + Core Audio + MAD + FFmpeg) audio decoding. -* [beets](http://beets.radbox.org/) - A music library manager and [MusicBrainz](https://musicbrainz.org/) tagger. -* [dejavu](https://github.com/worldveil/dejavu) - Audio fingerprinting and recognition. -* [django-elastic-transcoder](https://github.com/StreetVoice/django-elastic-transcoder) - Django + [Amazon Elastic Transcoder](http://aws.amazon.com/elastictranscoder/). -* [eyeD3](http://eyed3.nicfit.net/) - A tool for working with audio files, specifically MP3 files containing ID3 metadata. -* [id3reader](http://nedbatchelder.com/code/modules/id3reader.py) - A Python module for reading MP3 meta data. -* [mutagen](https://code.google.com/p/mutagen/) - A Python module to handle audio metadata. -* [pydub](https://github.com/jiaaro/pydub) - Manipulate audio with a simple and easy high level interface. -* [pyechonest](https://github.com/echonest/pyechonest) - Python client for the [Echo Nest](http://developer.echonest.com/docs/) API. -* [talkbox](http://scikits.appspot.com/talkbox) - A Python library for speech/signal processing. -* [TimeSide](https://github.com/yomguy/TimeSide) - Open web audio processing framework. -* [tinytag](https://github.com/devsnd/tinytag) - A library for reading music meta data of MP3, OGG, FLAC and Wave files. -* [m3u8](https://github.com/globocom/m3u8) - A module for parsing m3u8 file. +## Cryptography -## Video +- [cryptography](https://github.com/pyca/cryptography) - A package designed to expose cryptographic primitives and recipes to Python developers. +- [paramiko](https://github.com/paramiko/paramiko) - The leading native Python SSHv2 protocol library. +- [pynacl](https://github.com/pyca/pynacl) - Python binding to the Networking and Cryptography (NaCl) library. -*Libraries for manipulating video and GIFs.* +## Data Analysis -* [moviepy](http://zulko.github.io/moviepy/) - A module for script-based movie editing with many formats, including animated GIFs. -* [shorten.tv](http://www.shorten.tv/) - Video summarization. -* [scikit-video](https://github.com/aizvorski/scikit-video) - Video processing routines for SciPy. +_Libraries for data analysis._ -## Geolocation +- [aws-sdk-pandas](https://github.com/aws/aws-sdk-pandas) - Pandas on AWS. +- [datasette](https://github.com/simonw/datasette) - An open source multi-tool for exploring and publishing data. +- [desbordante](https://github.com/desbordante/desbordante-core/) - An open source data profiler for complex pattern discovery. +- [docling](https://github.com/docling-project/docling) - Library for converting documents into structured data. +- [optimus](https://github.com/hi-primus/optimus) - Agile Data Science Workflows made easy with PySpark. +- [pandas](https://pandas.pydata.org/) - A library providing high-performance, easy-to-use data structures and data analysis tools. +- [pathway](https://github.com/pathwaycom/pathway) - Real-time data processing framework for Python with reactive dataflows. +- [polars](https://github.com/pola-rs/polars) - A fast DataFrame library implemented in Rust with a Python API. -*Libraries for geocoding addresses and working with latitudes and longitudes.* +## Data Validation -* [GeoDjango](https://docs.djangoproject.com/en/dev/ref/contrib/gis/) - A world-class geographic web framework. -* [geopy](https://github.com/geopy/geopy) - Python Geocoding Toolbox. -* [pygeoip](https://github.com/appliedsec/pygeoip) - Pure Python GeoIP API. -* [GeoIP](https://github.com/maxmind/geoip-api-python) - Python API for MaxMind GeoIP Legacy Database. -* [geojson](https://github.com/frewsxcv/python-geojson) - Python bindings and utlities for GeoJSON. -* [django-countries](https://github.com/SmileyChris/django-countries) - A Django app that provides country choices for use with forms, flag icons static files, and a country field for models. +_Libraries for validating data. Used for forms in many cases._ -## HTTP +- [cerberus](https://github.com/pyeve/cerberus) - A lightweight and extensible data validation library. +- [colander](https://github.com/Pylons/colander) - Validating and deserializing data obtained via XML, JSON, an HTML form post. +- [jsonschema](https://github.com/python-jsonschema/jsonschema) - An implementation of [JSON Schema](http://json-schema.org/) for Python. +- [pydantic](https://github.com/pydantic/pydantic) - Data validation using Python type hints. +- [schema](https://github.com/keleshev/schema) - A library for validating Python data structures. +- [schematics](https://github.com/schematics/schematics) - Data Structure Validation. +- [voluptuous](https://github.com/alecthomas/voluptuous) - A Python data validation library. -*Libraries for working with HTTP.* +## Data Visualization -* [requests](http://docs.python-requests.org/) - HTTP Requests for Humans™. -* [grequests](https://github.com/kennethreitz/grequests) - requests + gevent for asynchronous HTTP requests. -* [urllib3](https://github.com/shazow/urllib3) - A HTTP library with thread-safe connection pooling, file post support, sanity friendly. -* [httplib2](https://github.com/jcgregorio/httplib2) - Comprehensive HTTP client library. -* [treq](https://github.com/dreid/treq) - Python requests like API built on top of Twisted's HTTP client. +_Libraries for visualizing data. Also see [awesome-javascript](https://github.com/sorrycc/awesome-javascript#data-visualization)._ + +- [altair](https://github.com/altair-viz/altair) - Declarative statistical visualization library for Python. +- [bokeh](https://github.com/bokeh/bokeh) - Interactive Web Plotting for Python. +- [bqplot](https://github.com/bloomberg/bqplot) - Interactive Plotting Library for the Jupyter Notebook. +- [cartopy](https://github.com/SciTools/cartopy) - A cartographic python library with matplotlib support. +- [diagrams](https://github.com/mingrammer/diagrams) - Diagram as Code. +- [matplotlib](https://github.com/matplotlib/matplotlib) - A Python 2D plotting library. +- [plotly](https://github.com/plotly/plotly.py) - Interactive graphing library for Python. +- [plotnine](https://github.com/has2k1/plotnine) - A grammar of graphics for Python based on ggplot2. +- [pygal](https://github.com/Kozea/pygal) - A Python SVG Charts Creator. +- [pygraphviz](https://github.com/pygraphviz/pygraphviz/) - Python interface to [Graphviz](http://www.graphviz.org/). +- [pyqtgraph](https://github.com/pyqtgraph/pyqtgraph) - Interactive and realtime 2D/3D/Image plotting and science/engineering widgets. +- [seaborn](https://github.com/mwaskom/seaborn) - Statistical data visualization using Matplotlib. +- [UltraPlot](https://github.com/ultraplot/UltraPlot) - Matplotlib wrapper for publication-ready scientific figures with minimal code. Includes advanced subplot management, panel layouts, and batteries-included geoscience plotting. +- [vispy](https://github.com/vispy/vispy) - High-performance scientific visualization based on OpenGL. ## Database -*Databases implemented in Python.* +_Databases implemented in Python._ -* [ZODB](http://www.zodb.org/) - A native object database for Python. A key-value and object graph database. -* [pickleDB](https://pythonhosted.org/pickleDB/) - A simple and lightweight key-value store for Python. -* [TinyDB](https://github.com/msiemens/tinydb) - A tiny, document-oriented database. +- [DuckDB](https://duckdb.org/) - An in-process SQL OLAP database management system; optimized for analytics and fast queries, similar to SQLite but for analytical workloads. +- [pickleDB](https://github.com/patx/pickledb) - A simple and lightweight key-value store for Python. +- [tinydb](https://github.com/msiemens/tinydb) - A tiny, document-oriented database. +- [zodb](https://github.com/zopefoundation/ZODB) - A native object database for Python. A key-value and object graph database. ## Database Drivers -*Libraries for connecting and operating databases.* - -* Relational Databases - * [mysql-python](http://sourceforge.net/projects/mysql-python/) - The MySQL database connector for Python. - * [mysqlclient](https://github.com/PyMySQL/mysqlclient-python) - mysql-python fork supporting Python 3. - * [PyMySQL](https://github.com/PyMySQL/PyMySQL) - Pure Python MySQL driver compatible to mysql-python. - * [mysql-connector-python](https://pypi.python.org/pypi/mysql-connector-python) - A pure Python MySQL driver from Oracle. - * [oursql](https://pythonhosted.org/oursql/) - A better MySQL connector with support for native prepared statements and BLOBs. - * [psycopg2](http://initd.org/psycopg/) - The most popular PostgreSQL adapter for Python. - * [txpostgres](http://txpostgres.readthedocs.org/) - Twisted based asynchronous driver for PostgreSQL. - * [queries](https://github.com/gmr/queries) - A wrapper of the psycopg2 library for interacting with PostgreSQL. - * [dataset](https://github.com/pudo/dataset) - Store Python dicts in a database - works with SQLite, MySQL, and PostgreSQL. -* NoSQL Databases - * [cassandra-python-driver](https://github.com/datastax/python-driver) - Python driver for Cassandra. - * [pycassa](https://github.com/pycassa/pycassa) - Python Thrift driver for Cassandra. - * [HappyBase](http://happybase.readthedocs.org/) - A developer-friendly library for Apache HBase. - * [PyMongo](http://docs.mongodb.org/ecosystem/drivers/python/) - The official Python client for MongoDB. - * [Plyvel](https://plyvel.readthedocs.org/) - A fast and feature-rich Python interface to LevelDB. - * [redis-py](https://github.com/andymccurdy/redis-py) - The Redis Python Client. - * [py2neo](http://book.py2neo.org/) - Python wrapper client for Neo4j's restful interface. - * [telephus](https://github.com/driftx/Telephus) - Twisted based client for Cassandra. - * [txRedis](https://github.com/deldotdr/txRedis) - Twisted based client for Redis. +_Libraries for connecting and operating databases._ + +- MySQL - [awesome-mysql](http://shlomi-noach.github.io/awesome-mysql/) + - [mysqlclient](https://github.com/PyMySQL/mysqlclient) - MySQL connector with Python 3 support ([mysql-python](https://sourceforge.net/projects/mysql-python/) fork). + - [pymysql](https://github.com/PyMySQL/PyMySQL) - A pure Python MySQL driver compatible to mysql-python. +- PostgreSQL - [awesome-postgres](https://github.com/dhamaniasad/awesome-postgres) + - [psycopg](https://github.com/psycopg/psycopg) - The most popular PostgreSQL adapter for Python. +- SQlite - [awesome-sqlite](https://github.com/planetopendata/awesome-sqlite) + - [sqlite-utils](https://github.com/simonw/sqlite-utils) - Python CLI utility and library for manipulating SQLite databases. + - [sqlite3](https://docs.python.org/3/library/sqlite3.html) - (Python standard library) SQlite interface compliant with DB-API 2.0. +- Other Relational Databases + - [clickhouse-driver](https://github.com/mymarilyn/clickhouse-driver) - Python driver with native interface for ClickHouse. + - [pymssql](https://github.com/pymssql/pymssql) - A simple database interface to Microsoft SQL Server. +- NoSQL Databases + - [cassandra-driver](https://github.com/datastax/python-driver) - The Python Driver for Apache Cassandra. + - [Django MongoDB Backend](https://github.com/mongodb/django-mongodb-backend) - Official MongoDB database backend for Django. + - [kafka-python](https://github.com/dpkp/kafka-python) - The Python client for Apache Kafka. + - [pymongo](https://github.com/mongodb/mongo-python-driver) - The official Python client for MongoDB. + - [redis-py](https://github.com/redis/redis-py) - The Python client for Redis. + - [Beanie](https://github.com/BeanieODM/beanie) - An asynchronous Python object-document mapper (ODM) for MongoDB. -## ORM +## Date and Time -*Libraries that implement Object-Relational Mapping or datamapping techniques.* - -* Relational Databases - * [Django Models](https://docs.djangoproject.com/en/dev/topics/db/models/) - A part of Django. - * [SQLAlchemy](http://www.sqlalchemy.org/) - The Python SQL Toolkit and Object Relational Mapper. - * [awesome-sqlalchemy](https://github.com/dahlia/awesome-sqlalchemy) - * [peewee](https://github.com/coleifer/peewee) - A small, expressive ORM. - * [PonyORM](http://ponyorm.com) - ORM that provides a generator-oriented interface to SQL. -* NoSQL Databases - * [MongoEngine](http://mongoengine.org/) - A Python Object-Document-Mapper for working with MongoDB. - * [django-mongodb-engine](https://github.com/django-nonrel/mongodb-engine) - Django MongoDB Backend. - * [redisco](https://github.com/kiddouk/redisco) - A Python Library for Simple Models and Containers Persisted in Redis. - * [flywheel](https://github.com/mathcamp/flywheel) - Object mapper for Amazon DynamoDB. -* Others - * [butterdb](https://github.com/Widdershin/butterdb) - A Python ORM for Google Drive Spreadsheets. +_Libraries for working with dates and times._ -## Web Frameworks +- [arrow](https://github.com/arrow-py/arrow) - A Python library that offers a sensible and human-friendly approach to creating, manipulating, formatting and converting dates, times and timestamps. +- [dateutil](https://github.com/dateutil/dateutil) - Extensions to the standard Python [datetime](https://docs.python.org/3/library/datetime.html) module. +- [pendulum](https://github.com/sdispater/pendulum) - Python datetimes made easy. +- [pytz](https://pypi.org/project/pytz/) - World timezone definitions, modern and historical. Brings the [tz database](https://en.wikipedia.org/wiki/Tz_database) into Python. -*Full stack web frameworks.* - -* [Django](https://www.djangoproject.com/) - The most popular web framework in Python. - * [awesome-django](https://github.com/rosarior/awesome-django) -* [Flask](http://flask.pocoo.org/) - A microframework for Python. - * [awesome-flask](https://github.com/humiaozuzu/awesome-flask) -* [Bottle](http://bottlepy.org/) - A fast, simple and lightweight WSGI micro web-framework. -* [Pyramid](http://www.pylonsproject.org/) - A small, fast, down-to-earth, open source Python web framework. -* [web2py](http://www.web2py.com) - A full stack web framework and platform focused in the ease of use. -* [web.py](http://webpy.org/) - A web framework for Python that is as simple as it is powerful. -* [TurboGears](http://www.turbogears.org/) - The Web Framework that starts as a microframework and scales up to a fullstack solution. -* [CherryPy](http://www.cherrypy.org/) - A Minimalist Python Web Framework, HTTP/1.1-compliant and WSGI thread-pooled. -* [Grok](http://grok.zope.org/) - A framework built on the existing Zope 3 libraries. -* [Bluebream](http://bluebream.zope.org/) - An open-source web application server, framework and library, formerly known as Zope 3. -* [guava](https://github.com/flatpeach/guava) - A lightweight and high performance web framework for Python written in C. +## Debugging Tools -## Permissions +_Libraries for debugging code._ + +- pdb-like Debugger + - [ipdb](https://github.com/gotcha/ipdb) - IPython-enabled [pdb](https://docs.python.org/3/library/pdb.html). + - [pudb](https://github.com/inducer/pudb) - A full-screen, console-based Python debugger. +- Tracing + - [manhole](https://github.com/ionelmc/python-manhole) - Debugging UNIX socket connections and present the stacktraces for all threads and an interactive prompt. + - [python-hunter](https://github.com/ionelmc/python-hunter) - A flexible code tracing toolkit. +- Profiler + - [py-spy](https://github.com/benfred/py-spy) - A sampling profiler for Python programs. Written in Rust. + - [vprof](https://github.com/nvdv/vprof) - Visual Python profiler. +- Others + - [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar) - Display various debug information for Django. + - [flask-debugtoolbar](https://github.com/pallets-eco/flask-debugtoolbar) - A port of the django-debug-toolbar to flask. + - [icecream](https://github.com/gruns/icecream) - Inspect variables, expressions, and program execution with a single, simple function call. + - [memory-graph](https://github.com/bterwijn/memory_graph) - Visualize Python data at runtime to debug references, mutability, and aliasing. + - [pyelftools](https://github.com/eliben/pyelftools) - Parsing and analyzing ELF files and DWARF debugging information. + +## Deep Learning + +_Frameworks for Neural Networks and Deep Learning. Also see [awesome-deep-learning](https://github.com/ChristosChristofidis/awesome-deep-learning)._ + +- [jax](https://github.com/google/jax) - a library for high-performance numerical computing with automatic differentiation and JIT compilation. +- [keras](https://github.com/keras-team/keras) - A high-level neural networks library and capable of running on top of either TensorFlow or Theano. +- [pytorch-lightning](https://github.com/Lightning-AI/pytorch-lightning) - Deep learning framework to train, deploy, and ship AI products Lightning fast. +- [pytorch](https://github.com/pytorch/pytorch) - Tensors and Dynamic neural networks in Python with strong GPU acceleration. +- [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) - PyTorch implementations of Stable Baselines (deep) reinforcement learning algorithms. +- [tensorflow](https://github.com/tensorflow/tensorflow) - The most popular Deep Learning framework created by Google. +- [vllm](https://github.com/vllm-project/vllm) - A high-throughput and memory-efficient inference and serving engine for LLMs. -*Libraries that allow or deny users access to data or functionality.* +## DevOps Tools -* [django-guardian](https://github.com/lukaszb/django-guardian) - Implementation of per object permissions for Django 1.2+ -* [Carteblanche](http://www.github.com/neuman/python-carteblanche/) - Module to align code with thoughts of users and designers. Also magically handles navigation and permissions. +_Software and libraries for DevOps._ + +- Cloud Providers + - [boto3](https://github.com/boto/boto3) - Python interface to Amazon Web Services. +- Configuration Management + - [ansible](https://github.com/ansible/ansible) - A radically simple IT automation platform. + - [cloudinit](https://github.com/canonical/cloud-init) - A multi-distribution package that handles early initialization of a cloud instance. + - [openstack](https://www.openstack.org/) - Open source software for building private and public clouds. + - [pyinfra](https://github.com/pyinfra-dev/pyinfra) - A versatile CLI tools and python libraries to automate infrastructure. + - [saltstack](https://github.com/saltstack/salt) - Infrastructure automation and management system. +- SSH-style Deployment + - [cuisine](https://github.com/sebastien/cuisine) - Chef-like functionality for Fabric. + - [fabric](https://github.com/fabric/fabric) - A simple, Pythonic tool for remote execution and deployment. +- Process Management + - [supervisor](https://github.com/Supervisor/supervisor) - Supervisor process control system for UNIX. +- Monitoring + - [psutil](https://github.com/giampaolo/psutil) - A cross-platform process and system utilities module. +- Backup + - [borg](https://github.com/borgbackup/borg) - A deduplicating archiver with compression and encryption. +- Chaos Engineering + - [chaostoolkit](https://github.com/chaostoolkit/chaostoolkit) - A Chaos Engineering toolkit & Orchestration for Developers. + +## Distributed Computing + +_Frameworks and libraries for Distributed Computing._ + +- Batch Processing + - [dask](https://github.com/dask/dask) - A flexible parallel computing library for analytic computing. + - [luigi](https://github.com/spotify/luigi) - A module that helps you build complex pipelines of batch jobs. + - [mpi4py](https://github.com/mpi4py/mpi4py) - Python bindings for MPI. + - [PySpark](https://github.com/apache/spark) - [Apache Spark](https://spark.apache.org/) Python API. + - [Ray](https://github.com/ray-project/ray/) - A system for parallel and distributed Python that unifies the machine learning ecosystem. +- Stream Processing + - [streamparse](https://github.com/Parsely/streamparse) - Run Python code against real-time streams of data via [Apache Storm](http://storm.apache.org/). -## CMS +## Distribution -*Content Management Systems.* +_Libraries to create packaged executables for release distribution._ -* [django-cms](https://www.django-cms.org/en/) - An Open source enterprise CMS based on the Django. -* [djedi-cms](http://djedi-cms.org/) - A lightweight but yet powerful Django CMS with plugins, inline editing and performance in mind. -* [FeinCMS](http://www.feincms.org/) - One of the most advanced Content Management Systems built on Django. -* [Kotte](http://kotti.pylonsproject.org/) - A high-level, Pythonic web application framework built on Pyramid. -* [Mezzanine](http://mezzanine.jupo.org/) - A powerful, consistent, and flexible content management platform. -* [Opps](http://oppsproject.org/) - A Django-based CMS for magazines, newspapers websites and portals with high-traffic. -* [Plone](http://plone.org/) - A CMS built on top of the open source application server Zope. -* [Quokka](http://quokkaproject.org/) - Flexible, extensible, small CMS powered by Flask and MongoDB. -* [Wagtail](http://wagtail.io/) - A Django content management system. -* [Widgy](http://wid.gy/) - Last CMS framework, based on Django. +- [cx_freeze](https://github.com/marcelotduarte/cx_Freeze) - It is a Python tool that converts Python scripts into standalone executables and installers for Windows, macOS, and Linux. +- [Nuitka](https://github.com/Nuitka/Nuitka) - Compiles Python programs into high-performance standalone executables (cross-platform, supports all Python versions). +- [py2app](https://github.com/ronaldoussoren/py2app) - Freezes Python scripts (Mac OS X). +- [py2exe](https://github.com/py2exe/py2exe) - Freezes Python scripts (Windows). +- [pyarmor](https://github.com/dashingsoft/pyarmor) - A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts. +- [pyinstaller](https://github.com/pyinstaller/pyinstaller) - Converts Python programs into stand-alone executables (cross-platform). +- [shiv](https://github.com/linkedin/shiv) - A command line utility for building fully self-contained zipapps (PEP 441), but with all their dependencies included. -## E-commerce +## Documentation -*Frameworks and libraries for e-commerce and payments.* +_Libraries for generating project documentation._ -* [django-oscar](http://oscarcommerce.com/) - An open-source e-commerce framework for Django. -* [django-shop](https://www.django-cms.org/) - A Django based shop system. -* [merchant](https://github.com/agiliq/merchant) - A Django app to accept payments from various payment processors. -* [money](https://github.com/carlospalol/money) - Money class with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution. -* [python-currencies](https://github.com/Alir3z4/python-currencies) - Display money format and its filthy currencies. +- [sphinx](https://github.com/sphinx-doc/sphinx/) - Python Documentation generator. + - [awesome-sphinxdoc](https://github.com/yoloseem/awesome-sphinxdoc) +- [pdoc](https://github.com/mitmproxy/pdoc) - Epydoc replacement to auto generate API documentation for Python libraries. -## RESTful API +## Downloader -*Libraries for developing RESTful APIs.* - -* [cornice](https://cornice.readthedocs.org/) - A REST framework for Pyramid. -* [django-rest-framework](http://www.django-rest-framework.org/) - A powerful and flexible toolkit that makes it easy to build Web APIs. -* [django-tastypie](http://tastypieapi.org/) - Creating delicious APIs for Django apps. -* [django-formapi](https://github.com/5monkeys/django-formapi) - Create JSON APIs with HMAC authentication and Django form-validation. -* [flask-api](http://www.flaskapi.org/) - An implementation of the same web browsable APIs that django-rest-framework provides. -* [flask-restful](http://flask-restful.readthedocs.org/) - An extension for Flask that adds support for quickly building REST APIs. -* [flask-restless](https://flask-restless.readthedocs.org/en/latest/) - A Flask extension for generating ReSTful APIs for database models defined with SQLAlchemy (or Flask-SQLAlchemy). -* [flask-api-utils](https://github.com/marselester/flask-api-utils) - Flask extension that takes care of API representation and authentication. -* [falcon](http://falconframework.org/) - A high-performance Python framework for building cloud APIs and web app backends. -* [eve](https://github.com/nicolaiarocci/eve) - REST API framework powered by Flask, MongoDB and good intentions. -* [sandman](https://github.com/jeffknupp/sandman) - Automated REST APIs for existing database-driven systems. -* [restless](http://restless.readthedocs.org/en/latest/) - Framework agnostic REST framework based on lessons learned from TastyPie. -* [savory-pie](https://github.com/RueLaLa/savory-pie/) - REST API building library (django, and others) +_Libraries for downloading._ + +- [akshare](https://github.com/jindaxiang/akshare) - A financial data interface library, built for human beings! +- [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. +- [s3cmd](https://github.com/s3tools/s3cmd) - A command line tool for managing Amazon S3 and CloudFront. +- [yfinance](https://github.com/ranaroussi/yfinance) - Easy Pythonic way to download market and financial data from Yahoo Finance. +- [youtube-dl](https://github.com/ytdl-org/youtube-dl/) - A command-line program to download videos from YouTube and other video sites. + +## Editor Plugins and IDEs + +- Emacs + - [elpy](https://github.com/jorgenschaefer/elpy) - Emacs Python Development Environment. +- Vim + - [jedi-vim](https://github.com/davidhalter/jedi-vim) - Vim bindings for the Jedi auto-completion library for Python. + - [python-mode](https://github.com/python-mode/python-mode) - An all in one plugin for turning Vim into a Python IDE. + - [YouCompleteMe](https://github.com/Valloric/YouCompleteMe) - Includes [Jedi](https://github.com/davidhalter/jedi)-based completion engine for Python. +- Visual Studio + - [PTVS](https://github.com/Microsoft/PTVS) - Python Tools for Visual Studio. +- Visual Studio Code + - [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python) - The official VSCode extension with rich support for Python. +- IDE + - [PyCharm](https://www.jetbrains.com/pycharm/) - Commercial Python IDE by JetBrains. Has free community edition available. + - [spyder](https://github.com/spyder-ide/spyder) - Open Source Python IDE. -## Authentication +## Email -*Libraries for implementing authentications schemes.* - -* OAuth - * [Authomatic](http://peterhudec.github.io/authomatic/) - Simple but powerful framework agnostic authentication/authorization client package. - * [OAuthLib](https://github.com/idan/oauthlib) - A generic, spec-compliant, thorough implementation of the OAuth request-signing logic. - * [rauth](https://github.com/litl/rauth) - A Python library for OAuth 1.0/a, 2.0, and Ofly. - * [python-oauth2](https://github.com/simplegeo/python-oauth2) - A fully tested, abstract interface to creating OAuth clients and servers. - * [python-social-auth](https://github.com/omab/python-social-auth) - An easy-to-setup social authentication mechanism. - * [django-oauth-toolkit](https://github.com/evonove/django-oauth-toolkit) - OAuth2 goodies for the Djangonauts. - * [django-oauth2-provider](https://github.com/caffeinehit/django-oauth2-provider) - Providing OAuth2 access to Django app. - * [django-allauth](https://github.com/pennersr/django-allauth) - Authentication app for Django that "just works." - * [Flask-OAuthlib](https://github.com/lepture/flask-oauthlib) - OAuth 1.0/a, 2.0 implementation of client and provider for Flask. - * [sanction](https://github.com/demianbrecht/sanction) - A dead simple OAuth2 client implementation. -* Others - * [PyJWT](https://github.com/progrium/pyjwt) - Implementation of the JSON Web Token draft 01. - * [python-jwt](https://github.com/davedoesdev/python-jwt) - Module for generating and verifying JSON Web Tokens. - * [python-jws](https://github.com/brianloveswords/python-jws) - Implementation of JSON Web Signatures draft 02. - * [jose](https://github.com/demonware/jose) - JavaScript Object Signing and Encryption draft implementation. +_Libraries for sending and parsing email._ -## Template Engine +- Mail Servers + - [modoboa](https://github.com/modoboa/modoboa) - A mail hosting and management platform including a modern Web UI. +- Clients + - [imbox](https://github.com/martinrusev/imbox) - Python IMAP for Humans. + - [yagmail](https://github.com/kootenpv/yagmail) - Yet another Gmail/SMTP client. +- Others + - [flanker](https://github.com/mailgun/flanker) - An email address and Mime parsing library. + - [mailer](https://github.com/marrow/mailer) - High-performance extensible mail delivery framework. -*Libraries and tools for templating and lexing.* +## Environment Management -* [Jinja2](https://github.com/mitsuhiko/jinja2) - A modern and designer friendly templating language. -* [Genshi](http://genshi.edgewall.org/) - Python templating toolkit for generation of web-aware output. -* [Mako](http://www.makotemplates.org/) - Hyperfast and lightweight templating for the Python platform. -* [Chameleon](https://chameleon.readthedocs.org/) - An HTML/XML template engine. Modeled after ZPT, optimized for speed. -* [Spitfire](https://code.google.com/p/spitfire/) - A very fast Python template compiler. +_Libraries for Python version and virtual environment management._ -## Queue +- [pyenv](https://github.com/pyenv/pyenv) - Simple Python version management. +- [pyenv-win](https://github.com/pyenv-win/pyenv-win) - Pyenv for Windows, Simple Python version management. +- [uv](https://github.com/astral-sh/uv) - An extremely fast Python package and project manager, written in Rust. +- [virtualenv](https://github.com/pypa/virtualenv) - A tool to create isolated Python environments. -*Libraries for working with event and task queues.* +## File Manipulation -* [celery](http://www.celeryproject.org/) - An asynchronous task queue/job queue based on distributed message passing. -* [huey](https://github.com/coleifer/huey) - Little multi-threaded task queue. -* [mrq](https://github.com/pricingassistant/mrq) - Mr. Queue - A distributed worker task queue in Python using Redis & gevent. -* [rq](http://python-rq.org/) - Simple job queues for Python. -* [simpleq](https://github.com/rdegges/simpleq) - A simple, infinitely scalable, Amazon SQS based queue. +_Libraries for file manipulation._ -## Search +- [markitdown](https://github.com/microsoft/markitdown) - Python tool for converting files and office documents to Markdown. +- [mimetypes](https://docs.python.org/3/library/mimetypes.html) - (Python standard library) Map filenames to MIME types. +- [path.py](https://github.com/jaraco/path.py) - A module wrapper for [os.path](https://docs.python.org/3/library/os.path.html). +- [pathlib](https://docs.python.org/3/library/pathlib.html) - (Python standard library) A cross-platform, object-oriented path library. +- [python-magic](https://github.com/ahupp/python-magic) - A Python interface to the libmagic file type identification library. +- [watchdog](https://github.com/gorakhargosh/watchdog) - API and shell utilities to monitor file system events. +- [watchfiles](https://github.com/samuelcolvin/watchfiles) - Simple, modern and fast file watching and code reload in python. -*Libraries and software for indexing and performing search queries on data.* +## Functional Programming -* [django-haystack](https://github.com/toastdriven/django-haystack) - Modular search for Django. -* [elasticsearch-py](http://www.elasticsearch.org/guide/en/elasticsearch/client/python-api/current/) - The official low-level Python client for [Elasticsearch](http://www.elasticsearch.org/). -* [solrpy](https://code.google.com/p/solrpy/) - A Python client for [solr](http://lucene.apache.org/solr/). -* [Whoosh](http://whoosh.readthedocs.org/) - A fast, pure Python search engine library. +_Functional Programming with Python._ + +- [coconut](https://github.com/evhub/coconut) - A variant of Python built for simple, elegant, Pythonic functional programming. +- [cytoolz](https://github.com/pytoolz/cytoolz/) - Cython implementation of `Toolz`: High performance functional utilities. +- [functools](https://docs.python.org/3/library/functools.html) - (Python standard library) Higher-order functions and operations on callable objects. +- [funcy](https://github.com/Suor/funcy) - A fancy and practical functional tools. +- [more-itertools](https://github.com/erikrose/more-itertools) - More routines for operating on iterables, beyond `itertools`. +- [returns](https://github.com/dry-python/returns) - A set of type-safe monads, transformers, and composition utilities. +- [toolz](https://github.com/pytoolz/toolz) - A collection of functional utilities for iterators, functions, and dictionaries. + +## GUI Development + +_Libraries for working with graphical user interface applications._ + +- [curses](https://docs.python.org/3/library/curses.html) - Built-in wrapper for [ncurses](http://www.gnu.org/software/ncurses/) used to create terminal GUI applications. +- [CustomTkinter](https://github.com/tomschimansky/customtkinter) - A modern and customizable python UI-library based on Tkinter. +- [DearPyGui](https://github.com/RaylockLLC/DearPyGui/) - A Simple GPU accelerated Python GUI framework +- [enaml](https://github.com/nucleic/enaml) - Creating beautiful user-interfaces with Declarative Syntax like QML. +- [Flet](https://flet.dev) - Cross-platform GUI framework for building modern apps in pure Python. +- [Flexx](https://github.com/zoofIO/flexx) - Flexx is a pure Python toolkit for creating GUI's, that uses web technology for its rendering. +- [Gooey](https://github.com/chriskiehl/Gooey) - Turn command line programs into a full GUI application with one line. +- [kivy](https://kivy.org/) - A library for creating NUI applications, running on Windows, Linux, Mac OS X, Android and iOS. +- [NiceGUI](https://github.com/zauberzeug/nicegui) - An easy-to-use, Python-based UI framework, which shows up in your web browser. +- [pyglet](https://github.com/pyglet/pyglet) - A cross-platform windowing and multimedia library for Python. +- [PyGObject](https://pygobject.readthedocs.io/) - Python Bindings for GLib/GObject/GIO/GTK+ (GTK+3). +- [PySide](https://doc.qt.io/qtforpython/) - Qt for Python offers the official Python bindings for [Qt](https://www.qt.io/), this is same as PyQt but it's the official binding with different licensing. +- [PyQt](https://www.riverbankcomputing.com/static/Docs/PyQt6/) - Python bindings for the [Qt](https://www.qt.io/) cross-platform application and UI framework. +- [pywebview](https://github.com/r0x0r/pywebview/) - A lightweight cross-platform native wrapper around a webview component. +- [Tkinter](https://wiki.python.org/moin/TkInter) - Tkinter is Python's de-facto standard GUI package. +- [Toga](https://github.com/pybee/toga) - A Python native, OS native GUI toolkit. +- [urwid](https://urwid.org/) - A library for creating terminal GUI applications with strong support for widgets, events, rich colors, etc. +- [wxPython](https://wxpython.org/) - A blending of the wxWidgets C++ class library with the Python. + +## GraphQL + +_Libraries for working with GraphQL._ + +- [graphene](https://github.com/graphql-python/graphene/) - GraphQL framework for Python. +- [strawberry-django](https://github.com/strawberry-graphql/strawberry-django) - Strawberry GraphQL integration with Django. -## News Feed +## Game Development -*Libraries for building user's activities.* +_Awesome game development libraries._ -* [Feedly](https://github.com/tschellenbach/Feedly) - A library to build newsfeed and notification systems using Cassandra and Redis. -* [django-activity-stream](https://github.com/justquick/django-activity-stream) - Generate generic activity streams from the actions on your site. +- [Arcade](https://api.arcade.academy/en/latest/) - Arcade is a modern Python framework for crafting games with compelling graphics and sound. +- [Cocos2d](https://www.cocos.com/en/cocos2d-x) - A framework for building 2D games, demos, and other graphical/interactive applications. +- [Harfang3D](http://www.harfang3d.com) - Python framework for 3D, VR and game development. +- [Panda3D](https://www.panda3d.org/) - 3D game engine developed by Disney. +- [Pygame](https://www.pygame.org/news.html) - Pygame is a set of Python modules designed for writing games. +- [PyOgre](http://www.ogre3d.org/tikiwiki/PyOgre) - Python bindings for the Ogre 3D render engine, can be used for games, simulations, anything 3D. +- [PyOpenGL](http://pyopengl.sourceforge.net/) - Python ctypes bindings for OpenGL and it's related APIs. +- [PySDL2](https://pysdl2.readthedocs.io) - A ctypes based wrapper for the SDL2 library. +- [RenPy](https://www.renpy.org/) - A Visual Novel engine. -## Asset Management +## Geolocation -*Tools for managing, compressing and minifying website assets.* +_Libraries for geocoding addresses and working with latitudes and longitudes._ -* [django-compressor](https://github.com/django-compressor/django-compressor) - Compresses linked and inline javascript or CSS into a single cached file. -* [jinja-assets-compressor](https://github.com/jaysonsantos/jinja-assets-compressor) - A Jinja extension to compile and compress your assets. -* [webassets](http://webassets.readthedocs.org/) - Bundles, optimizes, and manages unique cache-busting URLs for static resources. -* [fanstatic](http://www.fanstatic.org/) - Packages, optimizes, and serves static file dependencies as Python packages. -* [fileconveyor](http://fileconveyor.org/) - Monitors changes, processes, and transports assets to CDNs and file storage systems. -* [django-storages](http://code.larlet.fr/django-storages/) - A collection of custom storage backends for Django. -* [glue](http://gluecss.com) - Glue is a simple command line tool to generate CSS sprites. -* [libsass-python](http://hongminhee.org/libsass-python/) - A Python binding of [libsass](https://github.com/hcatlin/libsass), the reference implementation of SASS/SCSS. -* [Flask-Assets](http://flask-assets.readthedocs.org/) - Helps you integrate webassets into your Flask app. +- [django-countries](https://github.com/SmileyChris/django-countries) - A Django app that provides a country field for models and forms. +- [geodjango](https://docs.djangoproject.com/en/dev/ref/contrib/gis/) - A world-class geographic web framework. +- [geojson](https://github.com/jazzband/geojson) - Python bindings and utilities for GeoJSON. +- [geopandas](https://github.com/geopandas/geopandas) - Python tools for geographic data (GeoSeries/GeoDataFrame) built on pandas. +- [geopy](https://github.com/geopy/geopy) - Python Geocoding Toolbox. -## Caching +## HTML Manipulation -*Libraries for caching data.* +_Libraries for working with HTML and XML._ -* [Beaker](http://beaker.readthedocs.org/) - A library for caching and sessions for use with web applications and stand-alone Python scripts and applications. -* [dogpile.cache](http://dogpilecache.readthedocs.org/) - dogpile.cache is next generation replacement for Beaker made by same authors. -* [HermesCache](https://pypi.python.org/pypi/HermesCache) - Python caching library with tag-based invalidation and dogpile effect prevention. -* [django-cache-machine](https://github.com/jbalogh/django-cache-machine) - Automatic caching and invalidation for Django models through the ORM. -* [django-cacheops](https://github.com/Suor/django-cacheops) - A slick ORM cache with automatic granular event-driven invalidation. -* [johnny-cache](https://github.com/jmoiron/johnny-cache) - A caching framework for django applications. -* [django-viewlet](https://github.com/5monkeys/django-viewlet) - Render template parts with extended cache control. -* [pylibmc](https://github.com/lericson/pylibmc) - A Python wrapper around the [libmemcached](http://libmemcached.org/libMemcached.html) interface. +- [beautifulsoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) - Providing Pythonic idioms for iterating, searching, and modifying HTML or XML. +- [cssutils](https://pypi.org/project/cssutils/) - A CSS library for Python. +- [html5lib](https://github.com/html5lib/html5lib-python) - A standards-compliant library for parsing and serializing HTML documents and fragments. +- [JustHTML](https://github.com/EmilStenstrom/justhtml/) - A pure Python HTML5 parser that just works. +- [lxml](https://lxml.de/) - A very fast, easy-to-use and versatile library for handling HTML and XML. +- [markupsafe](https://github.com/pallets/markupsafe) - Implements a XML/HTML/XHTML Markup safe string for Python. +- [pyquery](https://github.com/gawel/pyquery) - A jQuery-like library for parsing HTML. +- [untangle](https://github.com/stchris/untangle) - Converts XML documents to Python objects for easy access. +- [WeasyPrint](https://weasyprint.org) - A visual rendering engine for HTML and CSS that can export to PDF. +- [xmldataset](https://xmldataset.readthedocs.io/en/latest/) - Simple XML Parsing. +- [xmltodict](https://github.com/martinblech/xmltodict) - Working with XML feel like you are working with JSON. -## Email +## HTTP Clients -*Libraries for sending and parsing email.* - -* [inbox.py](https://github.com/kennethreitz/inbox.py) - Python SMTP Server for Humans. -* [imbox](https://github.com/martinrusev/imbox) - Python IMAP for Humans. -* [inbox](https://github.com/inboxapp/inbox) - The open source email toolkit. -* [lamson](https://github.com/zedshaw/lamson) - Pythonic SMTP Application Server. -* [flanker](https://github.com/mailgun/flanker) - A email address and Mime parsing library. -* [marrow.mailer](https://github.com/marrow/marrow.mailer) - High-performance extensible mail delivery framework. -* [django-celery-ses](https://github.com/StreetVoice/django-celery-ses) - Django email backend with AWS SES and Celery. -* [modoboa](https://github.com/tonioo/modoboa) - A mail hosting and management platform including a modern and simplified Web UI. -* [envelopes](http://tomekwojcik.github.io/envelopes/) - Mailing for human beings. -* [mailjet](https://github.com/WoLpH/mailjet) - Mailjet API implementation for batch mailing, statistics and more. -* [Talon](https://github.com/mailgun/talon) - Mailgun library to extract message quotations and signatures. -* [pyzmail](http://www.magiksys.net/pyzmail/) - Compose, send and parse emails. +_Libraries for working with HTTP._ -## Internationalization +- [httpx](https://github.com/encode/httpx) - A next generation HTTP client for Python. +- [requests](https://github.com/psf/requests) - HTTP Requests for Humans. +- [treq](https://github.com/twisted/treq) - Python requests like API built on top of Twisted's HTTP client. +- [urllib3](https://github.com/urllib3/urllib3) - A HTTP library with thread-safe connection pooling, file post support, sanity friendly. -*Libraries for woking with i18n.* +## Hardware -* [Babel](http://babel.pocoo.org/) - An internationalization library for Python. -* [Korean](https://korean.readthedocs.org/) - A library for [Korean](http://en.wikipedia.org/wiki/Korean_language) morphology. +_Libraries for programming with hardware._ -## URL Manipulation +- [bleak](https://github.com/hbldh/bleak) - A cross platform Bluetooth Low Energy Client for Python using asyncio. +- [mouse](https://github.com/boppreh/mouse) - Hook and simulate global mouse events on Windows and Linux. +- [pynput](https://github.com/moses-palmer/pynput) - A library to control and monitor input devices. +- [scapy](https://github.com/secdev/scapy) - A brilliant packet manipulation library. -*Libraries for parsing URLs.* +## Image Processing -* [furl](https://github.com/gruns/furl) - A small Python library that makes manipulating URLs simple. -* [purl](https://github.com/codeinthehole/purl) - A simple, immutable URL class with a clean API for interrogation and manipulation. -* [pyshorteners](https://github.com/ellisonleao/pyshorteners) - A pure Python URL shortening lib. -* [short_url](https://github.com/Alir3z4/python-short_url) - Python implementation for generating Tiny URL and bit.ly-like URLs. -* [webargs](https://github.com/sloria/webargs) - A friendly library for parsing HTTP request arguments, with built-in support for popular web frameworks, including Flask, Django, Bottle, Tornado, and Pyramid. +_Libraries for manipulating images._ -## HTML Manipulation +- [pillow](https://github.com/python-pillow/Pillow) - Pillow is the friendly [PIL](http://www.pythonware.com/products/pil/) fork. +- [pymatting](https://github.com/pymatting/pymatting) - A library for alpha matting. +- [python-barcode](https://github.com/WhyNotHugo/python-barcode) - Create barcodes in Python with no extra dependencies. +- [python-qrcode](https://github.com/lincolnloop/python-qrcode) - A pure Python QR Code generator. +- [pyvips](https://github.com/libvips/pyvips) - A fast image processing library with low memory needs. +- [quads](https://github.com/fogleman/Quads) - Computer art based on quadtrees. +- [scikit-image](https://scikit-image.org/) - A Python library for (scientific) image processing. +- [thumbor](https://github.com/thumbor/thumbor) - A smart imaging service. It enables on-demand crop, re-sizing and flipping of images. +- [wand](https://github.com/emcconville/wand) - Python bindings for [MagickWand](http://www.imagemagick.org/script/magick-wand.php), C API for ImageMagick. -*Libraries for working with HTML and XML.* +## Implementations -* [BeautifulSoup](http://www.crummy.com/software/BeautifulSoup/bs4/doc/) - Providing Pythonic idioms for iterating, searching, and modifying HTML or XML. -* [lxml](http://lxml.de/) - A very fast, easy-to-use and versatile library for handling HTML and XML. -* [html5lib](https://github.com/html5lib/html5lib-python) - A standards-compliant library for parsing and serializing HTML documents and fragments. -* [pyquery](https://github.com/gawel/pyquery) - A jQuery-like library for parsing HTML. -* [cssutils](https://pypi.python.org/pypi/cssutils/) - A CSS library for Python. -* [MarkupSafe](https://github.com/mitsuhiko/markupsafe) - Implements a XML/HTML/XHTML Markup safe string for Python. -* [bleach](http://bleach.readthedocs.org/) - A whitelist-based HTML sanitization and text linkification library. -* [xmltodict](https://github.com/martinblech/xmltodict) - Working with XML feel like you are working with JSON. -* [xhtml2pdf](https://github.com/chrisglass/xhtml2pdf) - HTML/CSS to PDF converter. -* [untangle](https://github.com/stchris/untangle) - Converts XML documents to Python objects for easy access. +_Implementations of Python._ -## Web Crawling +- [clpython](https://github.com/metawilm/cl-python) - Implementation of the Python programming language written in Common Lisp. +- [cpython](https://github.com/python/cpython) - Default, most widely used implementation of the Python programming language written in C. +- [cython](https://github.com/cython/cython) - Optimizing Static Compiler for Python. +- [ironpython](https://github.com/IronLanguages/ironpython3) - Implementation of the Python programming language written in C#. +- [micropython](https://github.com/micropython/micropython) - A lean and efficient Python programming language implementation. +- [numba](https://github.com/numba/numba) - Python JIT compiler to LLVM aimed at scientific Python. +- [peachpy](https://github.com/Maratyszcza/PeachPy) - x86-64 assembler embedded in Python. +- [pypy](https://foss.heptapod.net/pypy/pypy) - A very fast and compliant implementation of the Python language. +- [pyston](https://github.com/pyston/pyston/) - A Python implementation using JIT techniques. -*Libraries for scraping websites.* +## Interactive Interpreter -* [Scrapy](http://scrapy.org/) - A fast high-level screen scraping and web crawling framework. -* [portia](https://github.com/scrapinghub/portia) - Visual scraping for Scrapy. -* [feedparser](http://pythonhosted.org/feedparser/) - Universal feed parser. -* [RoboBrowser](https://github.com/jmcarp/robobrowser) - A simple, Pythonic library for browsing the web without a standalone web browser. -* [MechanicalSoup](https://github.com/hickford/MechanicalSoup) - A Python library for automating interaction with websites. -* [mechanize](http://wwwsearch.sourceforge.net/mechanize/) - Stateful programmatic web browsing. -* [Demiurge](https://github.com/matiasb/demiurge) - PyQuery-based scraping micro-framework. -* [cola](https://github.com/chineking/cola) - A distributed crawling framework. -* [pyspider](https://github.com/binux/pyspider) - A powerful spider system. +_Interactive Python interpreters (REPL)._ -## Web Content Extracting +- [bpython](https://github.com/bpython/bpython) - A fancy interface to the Python interpreter. +- [Jupyter Notebook (IPython)](https://jupyter.org) - A rich toolkit to help you make the most out of using Python interactively. + - [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/jonathanslenders/ptpython) - Advanced Python REPL built on top of the [python-prompt-toolkit](https://github.com/jonathanslenders/python-prompt-toolkit). -*Libraries for extracting web contents.* +## Internationalization -* [newspaper](https://github.com/codelucas/newspaper) - News extraction, article extraction and content curation in Python. -* [html2text](https://github.com/Alir3z4/html2text) - Convert HTML to Markdown-formatted text. -* [python-goose](https://github.com/grangier/python-goose) - HTML Content/Article Extractor. -* [lassie](https://github.com/michaelhelmick/lassie) - Web Content Retrieval for Humans. -* [micawber](https://github.com/coleifer/micawber) - A small library for extracting rich content from URLs. -* [sumy](https://github.com/miso-belica/sumy) - A module for automatic summarization of text documents and HTML pages. -* [Haul](https://github.com/vinta/Haul) - An Extensible Image Crawler. -* [python-readability](https://github.com/buriy/python-readability) - Fast Python port of arc90's readability tool. -* [opengraph](https://github.com/erikriver/opengraph) - A Python module to parse the Open Graph Protocol -* [textract](https://github.com/deanmalmgren/textract) - Extract text from any document, Word, PowerPoint, PDFs, etc. -* [sanitize](https://github.com/Alir3z4/sanitize) - Bringing sanity to world of messed-up data. +_Libraries for working with i18n._ -## Forms +- [Babel](https://babel.pocoo.org/en/latest/) - An internationalization library for Python. -*Libraries for working with forms.* +## Job Scheduler -* [WTForms](http://wtforms.readthedocs.org/) - A flexible forms validation and rendering library. -* [WTForms-JSON](http://wtforms-json.readthedocs.org/) - A WTForms extension for JSON data handling. -* [Deform](http://deform.readthedocs.org/) - Python HTML form generation library influenced by the formish form generation library. -* [django-bootstrap3](https://github.com/dyve/django-bootstrap3) - Bootstrap 3 integration with Django. -* [django-crispy-forms](http://django-crispy-forms.readthedocs.org/) - A Django app which lets you create beautiful forms in a very elegant and DRY way. -* [django-remote-forms](https://github.com/WiserTogether/django-remote-forms) - A platform independent Django form serializer. +_Libraries for scheduling jobs._ -## Data Validation +- [Airflow](https://airflow.apache.org/) - Airflow is a platform to programmatically author, schedule and monitor workflows. +- [APScheduler](http://apscheduler.readthedocs.io/en/latest/) - A light but powerful in-process task scheduler that lets you schedule functions. +- [django-schedule](https://github.com/thauber/django-schedule) - A calendaring app for Django. +- [doit](http://pydoit.org/) - A task runner and build tool. +- [Joblib](https://joblib.readthedocs.io/) - A set of tools to provide lightweight pipelining in Python. +- [Plan](https://github.com/fengsp/plan) - Writing crontab file in Python like a charm. +- [Prefect](https://github.com/PrefectHQ/prefect) - A modern workflow orchestration framework that makes it easy to build, schedule and monitor robust data pipelines. +- [schedule](https://github.com/dbader/schedule) - Python job scheduling for humans. +- [Spiff](https://github.com/knipknap/SpiffWorkflow) - A powerful workflow engine implemented in pure Python. +- [TaskFlow](https://docs.openstack.org/developer/taskflow/) - A Python library that helps to make task execution easy, consistent and reliable. -*Libraries for validating data. Used for forms in many cases.* +## Logging -* [voluptuous](https://github.com/alecthomas/voluptuous) - A Python data validation library. It is primarily intended for validating data coming into Python as JSON, YAML, etc. -* [colander](http://docs.pylonsproject.org/projects/colander/) - A system for validating and deserializing data obtained via XML, JSON, an HTML form post or any other equally simple data serialization. -* [schema](https://github.com/halst/schema) - A library for validating Python data structures. -* [Schematics](https://github.com/schematics/schematics) - Data Structure Validation. -* [kmatch](https://github.com/ambitioninc/kmatch) - A language for matching/validating/filtering Python dictionaries. -* [valideer](https://github.com/podio/valideer) - Lightweight extensible data validation and adaptation library. +_Libraries for generating and working with logs._ -## Anti-spam +- [logbook](http://logbook.readthedocs.io/en/stable/) - Logging replacement for Python. +- [logging](https://docs.python.org/3/library/logging.html) - (Python standard library) Logging facility for Python. +- [loguru](https://github.com/Delgan/loguru) - Library which aims to bring enjoyable logging in Python. +- [sentry-python](https://github.com/getsentry/sentry-python) - Sentry SDK for Python. +- [structlog](https://www.structlog.org/en/stable/) - Structured logging made easy. -*Libraries for fighting spam.* +## Machine Learning -* [Stopspam](https://github.com/phalt/stopspam) - Intelligent spam detection for Python. -* [django-simple-spam-blocker](https://github.com/moqada/django-simple-spam-blocker) - Simple spam blocker for Django. -* [django-simple-captcha](https://github.com/mbi/django-simple-captcha) - A simple and highly customizable Django app to add captcha images to any Django form. +_Libraries for Machine Learning. Also see [awesome-machine-learning](https://github.com/josephmisiti/awesome-machine-learning#python)._ + +- [Agno](https://github.com/agno-agi/agno) - Open-source Python library for building AI agents and agentic systems. +- [diffusers](https://github.com/huggingface/diffusers) - A library that provides pretrained diffusion models for generating and editing images, audio, and video. +- [gym](https://github.com/openai/gym) - A toolkit for developing and comparing reinforcement learning algorithms. +- [Feature-engine](https://github.com/feature-engine/feature_engine) - sklearn compatible API with the widest toolset for feature engineering and selection. +- [H2O](https://github.com/h2oai/h2o-3) - Open Source Fast Scalable Machine Learning Platform. +- [Instructor](https://github.com/567-labs/instructor) - A library for extracting structured data from LLMs, powered by Pydantic. +- [LangChain](https://github.com/langchain-ai/langchain) - Building applications with LLMs through composability. +- [LlamaIndex](https://github.com/run-llama/llama_index) - A data framework for your LLM application. +- [Metrics](https://github.com/benhamner/Metrics) - Machine learning evaluation metrics. +- [MindsDB](https://github.com/mindsdb/mindsdb) - MindsDB is an open source AI layer for existing databases that allows you to effortlessly develop, train and deploy state-of-the-art machine learning models using standard queries. +- [pgmpy](https://github.com/pgmpy/pgmpy) - A Python library for probabilistic graphical models and Bayesian networks. +- [PraisonAI](https://github.com/MervinPraison/PraisonAI) - Production-ready Multi-AI Agents framework with self-reflection, 100+ LLM support, MCP integration, and agentic workflows. +- [pydantic-ai](https://github.com/pydantic/pydantic-ai) - A Python agent framework for building generative AI applications with structured schemas. +- [RAGFlow](https://github.com/infiniflow/ragflow) - An open-source RAG engine for document understanding and question answering with LLMs. +- [rasa](https://github.com/RasaHQ/rasa) - An open-source machine learning framework for automated text and voice-based conversations. +- [scikit-learn](http://scikit-learn.org/) - The most popular Python library for Machine Learning with extensive documentation and community support. +- [Spark ML](http://spark.apache.org/docs/latest/ml-guide.html) - [Apache Spark](http://spark.apache.org/)'s scalable Machine Learning library for distributed computing. +- [Transformers](https://github.com/huggingface/transformers) - A framework that lets you easily use pretrained transformer models for NLP, vision, and audio tasks. +- [xgboost](https://github.com/dmlc/xgboost) - A scalable, portable, and distributed gradient boosting library. -## Tagging +## Microsoft Windows -*Libraries for tagging items.* +_Python programming on Microsoft Windows._ -* [django-taggit](https://github.com/alex/django-taggit) - Simple tagging for Django. +- [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. +- [WinPython](https://winpython.github.io/) - Portable development environment for Windows 10/11. -## Admin Panels +## Miscellaneous -*Libraries for administrative interfaces.* +_Useful libraries or tools that don't fit in the categories above._ -* [Ajenti](https://github.com/Eugeny/ajenti) - The admin panel your servers deserve. -* [Grappelli](http://grappelliproject.com) – A jazzy skin for the Django Admin-Interface. -* [django-suit](http://djangosuit.com/) - Alternative Django Admin-Interface (free only for Non-commercial use). -* [django-xadmin](https://github.com/sshwsfc/django-xadmin) - Drop-in replacement of Django admin comes with lots of goodies. -* [flask-admin](https://github.com/mrjoes/flask-admin) - Simple and extensible administrative interface framework for Flask. -* [flower](https://github.com/mher/flower) - Real-time monitor and web admin for Celery. +- [blinker](https://github.com/jek/blinker) - A fast Python in-process signal/event dispatching system. +- [boltons](https://github.com/mahmoud/boltons) - A set of pure-Python utilities. +- [itsdangerous](https://github.com/pallets/itsdangerous) - Various helpers to pass trusted data to untrusted environments. +- [pluginbase](https://github.com/mitsuhiko/pluginbase) - A simple but flexible plugin system for Python. +- [tryton](http://www.tryton.org/) - A general-purpose business framework. -## Static Site Generator +## Natural Language Processing -*Static site generator is a software that takes some text + templates as input and produces html files on the output.* +_Libraries for working with human languages._ -* [Pelican](http://blog.getpelican.com/) - Uses Markdown or ReST for content and Jinja 2 for themes. Supports DVCS, Disqus. AGPL. -* [Cactus](http://github.com/koenbok/Cactus/) – Static site generator for designers. -* [Hyde](https://hyde.github.com/) - Jinja2-based static web site generator. -* [Nikola](http://www.getnikola.com/) - A static website and blog generator. -* [Tags](http://tags.brace.io/) - The simplest static site generator. -* [Tinkerer](http://tinkerer.me/) - Tinkerer is a blogging engine/.static website generator powered by Sphinx. +- General + - [gensim](https://github.com/RaRe-Technologies/gensim) - Topic Modeling for Humans. + - [langid.py](https://github.com/saffsd/langid.py) - Stand-alone language identification system. + - [nltk](https://www.nltk.org/) - A leading platform for building Python programs to work with human language data. + - [pattern](https://github.com/clips/pattern) - A web mining module. + - [polyglot](https://github.com/aboSamoor/polyglot) - Natural language pipeline supporting hundreds of languages. + - [spacy](https://spacy.io/) - A library for industrial-strength natural language processing in Python and Cython. + - [Stanza](https://github.com/stanfordnlp/stanza) - The Stanford NLP Group's official Python library, supporting 60+ languages. +- Chinese + - [funNLP](https://github.com/fighting41love/funNLP) - A collection of tools and datasets for Chinese NLP. + - [jieba](https://github.com/fxsjy/jieba) - The most popular Chinese text segmentation library. + - [pkuseg-python](https://github.com/lancopku/pkuseg-python) - A toolkit for Chinese word segmentation in various domains. + - [snownlp](https://github.com/isnowfy/snownlp) - A library for processing Chinese text. -## Processes and Threads +## Network Virtualization -*Libraries for woking with processes or threads* +_Tools and libraries for Virtual Networking and SDN (Software Defined Networking)._ -* [multiprocessing](https://docs.python.org/2/library/multiprocessing.html) - (Python standard library) Process-based "threading" interface. -* [threading](https://docs.python.org/2/library/threading.html) - (Python standard library) Higher-level threading interface. -* [envoy](https://github.com/kennethreitz/envoy) - Python Subprocesses for Humans™. -* [sh](https://github.com/amoffat/sh) - A full-fledged [subprocess](https://docs.python.org/2/library/subprocess.html) replacement for Python. -* [sarge](http://sarge.readthedocs.org/) - A wrapper for subprocess. +- [mininet](https://github.com/mininet/mininet) - A popular network emulator and API written in Python. +- [napalm](https://github.com/napalm-automation/napalm) - Cross-vendor API to manipulate network devices. +- [pox](https://github.com/noxrepo/pox) - A Python-based SDN control applications, such as OpenFlow SDN controllers. -## Concurrency and Networking +## ORM -*Libraries for concurrency and network programming.* +_Libraries that implement Object-Relational Mapping or data mapping techniques._ + +- Relational Databases + - [Django Models](https://docs.djangoproject.com/en/dev/topics/db/models/) - The Django ORM. + - [SQLAlchemy](https://www.sqlalchemy.org/) - The Python SQL Toolkit and Object Relational Mapper. + - [awesome-sqlalchemy](https://github.com/dahlia/awesome-sqlalchemy) + - [dataset](https://github.com/pudo/dataset) - Store Python dicts in a database - works with SQLite, MySQL, and PostgreSQL. + - [peewee](https://github.com/coleifer/peewee) - A small, expressive ORM. + - [pony](https://github.com/ponyorm/pony/) - ORM that provides a generator-oriented interface to SQL. + - [pydal](https://github.com/web2py/pydal/) - A pure Python Database Abstraction Layer. + - [SQLModel](https://sqlmodel.tiangolo.com/) - SQLModel is based on Python type annotations, and powered by Pydantic and SQLAlchemy. +- NoSQL Databases + - [mongoengine](https://github.com/MongoEngine/mongoengine) - A Python Object-Document-Mapper for working with MongoDB. + - [ODMantic](https://github.com/art049/odmantic) - Sync and Async ODM for MongoDB built on top of Pydantic for model definition and validation. + - [PynamoDB](https://github.com/pynamodb/PynamoDB) - A Pythonic interface for [Amazon DynamoDB](https://aws.amazon.com/dynamodb/). -* [asyncio](https://docs.python.org/3/library/asyncio.html) - (Python standard library in Python 3.4+) Asynchronous I/O, event loop, coroutines and tasks. -* [gevent](http://www.gevent.org/) - A coroutine-based Python networking library that uses [greenlet](https://github.com/python-greenlet/greenlet). -* [Twisted](https://twistedmatrix.com/trac/) - An event-driven networking engine. -* [Tornado](http://www.tornadoweb.org/) - A Web framework and asynchronous networking library. -* [pulsar](https://github.com/quantmind/pulsar) - Event-driven concurrent framework for Python. -* [diesel](https://github.com/jamwt/diesel) - Greenlet-based event I/O Framework for Python. -* [eventlet](http://eventlet.net/) - Asynchronous framework with WSGI support. -* [pyzmq](http://zeromq.github.io/pyzmq/) - A Python wrapper for the 0MQ message library. -* [txZMQ](https://github.com/smira/txZMQ) - Twisted based wrapper for the 0MQ message library. -* [Crossbar](http://crossbar.io) - Open-source Unified Application Router (Websocket & WAMP for Python on Autobahn). +## Package Management -## WebSocket +_Libraries for package and dependency management._ -*Libraries for woking with WebSocket.* +- [pip](https://pip.pypa.io/en/stable/) - The package installer for Python. + - [pip-tools](https://github.com/jazzband/pip-tools) - A set of tools to keep your pinned Python dependencies fresh. +- [conda](https://github.com/conda/conda/) - Cross-platform, Python-agnostic binary package manager. +- [hatch](https://github.com/pypa/hatch) - Modern, extensible Python project management. +- [poetry](https://github.com/sdispater/poetry) - Python dependency management and packaging made easy. +- [uv](https://github.com/astral-sh/uv) - An extremely fast Python package and project manager, written in Rust. -* [AutobahnPython](https://github.com/tavendo/AutobahnPython) - WebSocket & WAMP for Python on Twisted and [asyncio](https://docs.python.org/3/library/asyncio.html). -* [WebSocket-for-Python](https://github.com/Lawouach/WebSocket-for-Python) - WebSocket client and server library for Python 2 and 3 as well as PyPy. +## Package Repositories -## WSGI Servers +_Local PyPI repository server and proxies._ -*WSGI-compatible web servers.* +- [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. +- [warehouse](https://github.com/pypa/warehouse) - Next generation Python Package Repository (PyPI). -* [wsgiref](http://docs.python.org/library/wsgiref.html) - (Python standard library) WSGI reference implementation, single-threaded. -* [Werkzeug](http://werkzeug.pocoo.org/) - A WSGI utility library for Python that powers Flask and can easily be embedded into your own projects. -* [paste](http://pythonpaste.org/) - Multi-threaded, stable, tried and tested. -* [rocket](http://pypi.python.org/pypi/rocket) - Multi-threaded. -* [waitress](https://waitress.readthedocs.org/) - Multi-threaded, poweres Pyramid. -* [netius](https://github.com/hivesolutions/netius) - Asynchronous, very fast. -* [gunicorn](http://pypi.python.org/pypi/gunicorn) - Pre-forked, partly written in C. -* [fapws3](http://www.fapws.org/) - Asynchronous (network side only), written in C. -* [meinheld](http://pypi.python.org/pypi/meinheld) - Asynchronous, partly written in C. -* [bjoern](http://pypi.python.org/pypi/bjoern) - Asynchronous, very fast and written in C. +## Penetration Testing -## RPC Servers +_Frameworks and tools for penetration testing._ -*RPC-compatible servers.* +- [fsociety](https://github.com/Manisso/fsociety) - A Penetration testing framework. +- [setoolkit](https://github.com/trustedsec/social-engineer-toolkit) - A toolkit for social engineering. +- [sherlock](https://github.com/sherlock-project/sherlock) - Hunt down social media accounts by username across social networks. +- [sqlmap](https://github.com/sqlmapproject/sqlmap) - Automatic SQL injection and database takeover tool. -* [SimpleXMLRPCServer](https://docs.python.org/2/library/simplexmlrpcserver.html) - (Python standard library) Simple XML-RPC server implementation, single-threaded. -* [SimpleJSONRPCServer](https://github.com/joshmarshall/jsonrpclib/) - This library is an implementation of the JSON-RPC specification. -* [zeroRPC](https://github.com/dotcloud/zerorpc-python) - zerorpc is a flexible RPC implementation based on [ZeroMQ](http://zeromq.org/) and [MessagePack](http://msgpack.org/). +## Permissions -## Cryptography +_Libraries that allow or deny users access to data or functionality._ -* [PyCrypto](https://www.dlitz.net/software/pycrypto/) - The Python Cryptography Toolkit. -* [Paramiko](http://www.paramiko.org/) - A Python (2.6+, 3.3+) implementation of the SSHv2 protocol, providing both client and server functionality. -* [cryptography](https://cryptography.io/) - 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. -* [hashids](https://github.com/davidaurelio/hashids-python) - Implementation of [hashids](http://hashids.org) in Python. -* [Passlib](https://pythonhosted.org/passlib/) - Secure password storage/hashing library, very high level. +- [django-guardian](https://github.com/django-guardian/django-guardian) - Implementation of per object permissions for Django 1.2+ +- [django-rules](https://github.com/dfunckt/django-rules) - A tiny but powerful app providing object-level permissions to Django, without requiring a database. -## GUI +## Processes -*Libraries for working with graphical user interface applications.* +_Libraries for starting and communicating with OS processes._ -* [PyQt](http://www.riverbankcomputing.co.uk/software/pyqt/intro) - Python bindings for the [Qt](http://qt-project.org/) cross-platform application and UI framework, with support for both Qt v4 and Qt v5 frameworks. -* [PySide](http://qt-project.org/wiki/pyside) - Python bindings for the [Qt](http://qt-project.org/) cross-platform application and UI framework, supporting the Qt v4 framework. -* [wxPython](http://wxpython.org/) - A blending of the wxWidgets C++ class library with the Python. -* [kivy](http://kivy.org/) - A library for creating NUI applications, running on Windows, Linux, Mac OS X, Android and iOS. -* [curses](https://docs.python.org/2/library/curses.html#module-curses) - Built-in wrapper for [ncurses](http://www.gnu.org/software/ncurses/) used to create terminal GUI applications. -* [urwid](http://urwid.org/) - A library for creating terminal GUI applications with strong support for widgets, events, rich colors, etc. -* [pyglet](http://www.pyglet.org/) - A cross-platform windowing and multimedia library for Python. -* [Tkinter](https://wiki.python.org/moin/TkInter) - Tkinter is Python's de-facto standard GUI package. -* [enaml](https://github.com/nucleic/enaml) - Creating beautiful user-interfaces with Declaratic Syntax like QML. -* [Toga](https://github.com/pybee/toga) - A Python native, OS native GUI toolkit. +- [delegator.py](https://github.com/amitt001/delegator.py) - [Subprocesses](https://docs.python.org/3/library/subprocess.html) for Humans 2.0. +- [sarge](https://sarge.readthedocs.io/en/latest/) - Yet another wrapper for subprocess. +- [sh](https://github.com/amoffat/sh) - A full-fledged subprocess replacement for Python. -## Game Development +## Quantum Computing -*Awesome game development libraries.* +_Libraries for quantum computing._ -* [Pygame](http://www.pygame.org/news.html) - Pygame is a set of Python modules designed for writing games. -* [Cocos2d](http://cocos2d.org/) - cocos2d is a framework for building 2D games, demos, and other graphical/interactive applications. It is based on pyglet. -* [PySDL2](http://pysdl2.readthedocs.org/) - A ctypes based wrapper for the SDL2 library. -* [Panda3D](https://www.panda3d.org/) - 3D game engine developed by Disney and maintained by Carnegie Mellon's Entertainment Technology Center. Written in C++, completely wrapped in Python. -* [PyOgre](http://www.ogre3d.org/tikiwiki/PyOgre) - Python bindings for the Ogre 3D render engine, can be used for games, simulations, anything 3D. -* [PyOpenGL](http://pyopengl.sourceforge.net/) - Python ctypes bindings for OpenGL and it's related APIs. -* [PySFML](http://www.python-sfml.org/) - Python bindings for [SFML](http://www.sfml-dev.org/) -* [RenPy](http://www.renpy.org/) - A Visual Novel engine. +- [Cirq](https://github.com/quantumlib/Cirq) — A Google-developed framework focused on hardware-aware quantum circuit design for NISQ devices. +- [PennyLane](https://github.com/PennyLaneAI/pennylane) — A hybrid quantum-classical machine learning library with automatic differentiation support. +- [Qiskit](https://github.com/Qiskit/qiskit) — An IBM-backed quantum SDK for building, simulating, and running circuits on real quantum hardware. +- [QuTiP](http://qutip.org/) - Quantum Toolbox in Python. -## Logging +## Recommender Systems -*Libraries for generating and working with log files.* +_Libraries for building recommender systems._ -* [logging](https://docs.python.org/2/library/logging.html) - (Python standard library) Logging facility for Python. -* [logbook](http://pythonhosted.org/Logbook/) - Logging replacement for Python. -* [Sentry](https://pypi.python.org/pypi/sentry) - A realtime logging and aggregation server. -* [Raven](http://raven.readthedocs.org/) - The Python client for Sentry. +- [annoy](https://github.com/spotify/annoy) - Approximate Nearest Neighbors in C++/Python optimized for memory usage. +- [fastFM](https://github.com/ibayer/fastFM) - A library for Factorization Machines. +- [implicit](https://github.com/benfred/implicit) - A fast Python implementation of collaborative filtering for implicit datasets. +- [lightfm](https://github.com/lyst/lightfm) - A Python implementation of a number of popular recommendation algorithms. +- [spotlight](https://github.com/maciejkula/spotlight) - Deep recommender models using PyTorch. +- [Surprise](https://github.com/NicolasHug/Surprise) - A scikit for building and analyzing recommender systems. +- [tensorrec](https://github.com/jfkirk/tensorrec) - A Recommendation Engine Framework in TensorFlow. -## Testing +## Refactoring -*Libraries for testing codebases and generating test data.* - -* Testing Frameworks - * [unittest](https://docs.python.org/2/library/unittest.html) - (Python standard library) Unit testing framework. - * [nose](https://nose.readthedocs.org/) - nose extends unittest. - * [pytest](http://pytest.org/) - A mature full-featured Python testing tool. - * [mamba](https://nestorsalceda.github.io/mamba) - The definitive testing tool for Python. Born under the banner of BDD. - * [contexts](https://github.com/benjamin-hodgson/Contexts) - A BDD framework for Python 3.3+. Inspired by C#'s `Machine.Specifications`. - * [pyshould](https://github.com/drslump/pyshould) - Should style asserts based on [PyHamcrest](https://github.com/hamcrest/PyHamcrest). - * [pyvows](http://heynemann.github.io/pyvows/) - BDD style testing for Python. Inspired by [Vows.js](http://vowsjs.org/). -* Web Testing - * [Selenium](https://pypi.python.org/pypi/selenium) - Python bindings for [Selenium](http://www.seleniumhq.org/) WebDriver. - * [splinter](http://splinter.cobrateam.info/) - Open source tool for testing web applications. - * [locust](https://github.com/locustio/locust) - Scalable user load testing tool written in Python. - * [sixpack](https://github.com/seatgeek/sixpack) - A language-agnostic A/B Testing framework. -* Mock - * [mock](https://pypi.python.org/pypi/mock) - A Python Mocking and Patching Library for Testing. - * [responses](https://github.com/dropbox/responses) - A utility library for mocking out the requests Python library. - * [doublex](https://pypi.python.org/pypi/doublex) - Powerful test doubles framework for Python. - * [freezegun](https://github.com/spulec/freezegun) - Travel through time by mocking the datetime module. - * [httpretty](http://falcao.it/HTTPretty/) - HTTP request mock tool for Python. - * [httmock](https://github.com/patrys/httmock) - A mocking library for requests for Python 2.6+ and 3.2+. -* Code Coverage - * [coverage](https://pypi.python.org/pypi/coverage) - Code coverage measurement. -* Fake Data - * [faker](http://www.joke2k.net/faker/) - A Python package that generates fake data. - * [fake2db](https://github.com/emirozer/fake2db) - Fake database generator. - * [mixer](https://mixer.readthedocs.org) - Generating fake data and creating random fixtures for testing in Django ORM, SQLAlchemy, Peewee, MongoEngine, Pony ORM and etc. - * [model_mommy](https://model-mommy.readthedocs.org/) - Creating random fixtures for testing in Django. - * [ForgeryPy](https://pypi.python.org/pypi/ForgeryPy) - An easy to use forged data generator for Python. It's a port of [forgery](http://rubygems.org/gems/forgery). - * [radar](https://pypi.python.org/pypi/radar) - Generate random datetime / time. -* Error Handler - * [FuckIt.py](https://github.com/ajalt/fuckitpy) - FuckIt.py uses state-of-the-art technology to make sure your Python code runs whether it has any right to or not. - -## Code Analysis and Linter - -*Libraries and tools for analysing, parsing and manipulation codebases.* - -* Code Analysis - * [pysonar2](https://github.com/yinwang0/pysonar2) - A type inferencer and indexer for Python. - * [pycallgraph](https://github.com/gak/pycallgraph) - A library that visualises the flow (call graph) of your Python application. - * [code2flow](https://github.com/scottrogowski/code2flow) - Turn your Python and JavaScript code into DOT flowcharts. -* Linter - * [Flake8](https://pypi.python.org/pypi/flake8) - The modular source code checker: pep8, pyflakes and co. - * [pylama](https://pylama.readthedocs.org/) - Code audit tool for Python and JavaScript. - * [Pylint](http://www.pylint.org/) - A source code analyzer. +_Refactoring tools and libraries for Python._ -## Debugging Tools +- [Bowler](https://pybowler.io/) - Safe code refactoring for modern Python. +- [Rope](https://github.com/python-rope/rope) - Rope is a python refactoring library. -*Libraries for debugging code.* - -* [pdb](https://docs.python.org/2/library/pdb.html) - (Python standard library) The Python Debugger. -* [ipdb](https://pypi.python.org/pypi/ipdb) - IPython-enabled pdb. -* [winpdb](http://winpdb.org/) - A Platform Independent Python Debugger with GUI. -* [pudb](https://pypi.python.org/pypi/pudb) – A full-screen, console-based Python debugger. -* [pyringe](https://github.com/google/pyringe) - Debugger capable of attaching to and injecting code into Python processes. -* [python-statsd](https://github.com/WoLpH/python-statsd) - Python Client for the [statsd](https://github.com/etsy/statsd/) server. -* [memory_profiler](https://github.com/fabianp/memory_profiler) - Monitor Memory usage of Python code. -* [profiling](https://github.com/what-studio/profiling) - An interactive Python profiler. -* [django-debug-toolbar](https://github.com/django-debug-toolbar/django-debug-toolbar) - Display various debug information about the current request/response. -* [django-devserver](https://github.com/dcramer/django-devserver) - A drop-in replacement for Django's runserver. -* [flask-debugtoolbar](https://github.com/mgood/flask-debugtoolbar) - A port of the django-debug-toolbar to flask. -* [pyelftools](https://github.com/eliben/pyelftools) - A pure-Python library for parsing and analyzing ELF files and DWARF debugging information. - -## Science and Data Analysis - -*Libraries for scientific computing and data analyzing.* - -* [SciPy](http://www.scipy.org/) - A Python-based ecosystem of open-source software for mathematics, science, and engineering. -* [NumPy](http://www.numpy.org/) - A fundamental package for scientific computing with Python. -* [Numba](http://numba.pydata.org/) - Python JIT (just in time) complier to LLVM aimed at scientific Python by the developers of Cython and NumPy. -* [NetworkX](https://networkx.github.io/) - A high-productivity software for complex networks. -* [Pandas](http://pandas.pydata.org/) - A library providing high-performance, easy-to-use data structures and data analysis tools. -* [Open Mining](https://github.com/avelino/mining) - Business Intelligence (BI) in Python (Pandas web interface) -* [PyMC](https://github.com/pymc-devs/pymc) - Markov Chain Monte Carlo sampling toolkit. -* [zipline](https://github.com/quantopian/zipline) - A Pythonic algorithmic trading library. -* [PyDy](https://pydy.org/) - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion based around NumPy, SciPy, IPython, and matplotlib. -* [SymPy](https://github.com/sympy/sympy) - A Python library for symbolic mathematics. -* [statsmodels](https://github.com/statsmodels/statsmodels) - Statistical modeling and econometrics in Python. -* [astropy](http://www.astropy.org/) - A community Python library for Astronomy. -* [orange](http://orange.biolab.si/) - Data mining, data visualization, analysis and machine learning through visual programming or Python scripting. -* [RDKit](http://www.rdkit.org/) - Cheminformatics and Machine Learning Software. -* [Open Babel](http://openbabel.org/wiki/Main_Page) - A chemical toolbox designed to speak the many languages of chemical data. -* [cclib](http://cclib.github.io/) - A library for parsing and interpreting the results of computational chemistry packages. -* [Biopython](http://biopython.org/wiki/Main_Page) - Biopython is a set of freely available tools for biological computation. -* [bccb](https://github.com/chapmanb/bcbb) - Collection of useful code related to biological analysis. -* [bcbio-nextgen](https://github.com/chapmanb/bcbio-nextgen) - A toolkit providing best-practice pipelines for fully automated high throughput sequencing analysis. -* [blaze](http://blaze.pydata.org/docs/latest/index.html) - NumPy and Pandas interface to Big Data. +## RESTful API -## Data Visualization +_Libraries for building RESTful APIs._ -*Libraries for visualizing data. See: [awesome-javascript](https://github.com/sorrycc/awesome-javascript#data-visualization).* +- Django + - [django-rest-framework](https://github.com/encode/django-rest-framework) - A powerful and flexible toolkit to build web APIs. + - [django-tastypie](https://github.com/django-tastypie/django-tastypie) - Creating delicious APIs for Django apps. +- Flask + - [eve](https://github.com/pyeve/eve) - REST API framework powered by Flask, MongoDB and good intentions. + - [flask-api](https://github.com/flask-api/flask-api) - Browsable Web APIs for Flask. + - [flask-restful](https://github.com/flask-restful/flask-restful) - Quickly building REST APIs for Flask. +- Pyramid + - [cornice](https://github.com/Cornices/cornice) - A RESTful framework for Pyramid. +- Framework agnostic + - [falcon](https://github.com/falconry/falcon) - A high-performance framework for building cloud APIs and web app backends. + - [fastapi](https://github.com/tiangolo/fastapi) - A modern, fast, web framework for building APIs with Python 3.6+ based on standard Python type hints. + - [hug](https://github.com/hugapi/hug) - A Python 3 framework for cleanly exposing APIs. + - [sandman2](https://github.com/jeffknupp/sandman2) - Automated REST APIs for existing database-driven systems. + - [sanic](https://github.com/sanic-org/sanic) - A Python 3.6+ web server and web framework that's written to go fast. -* [matplotlib](http://matplotlib.org/) - A Python 2D plotting library. -* [bokeh](https://github.com/ContinuumIO/bokeh) - Interactive Web Plotting for Python. -* [plotly](https://plot.ly/python) - Collaborative web plotting for Python and matplotlib. -* [vincent](https://github.com/wrobstory/vincent) - A Python to Vega translator. -* [d3py](https://github.com/mikedewar/d3py) - A plottling library for Python, based on [D3.js](http://d3js.org/). -* [ggplot](https://github.com/yhat/ggplot) - Same API as ggplot2 for R. -* [Kartograph.py](https://github.com/kartograph/kartograph.py) - Rendering beautiful SVG maps in Python. -* [pygal](http://pygal.org/) - A Python SVG Charts Creator. -* [pygraphviz](https://pypi.python.org/pypi/pygraphviz) - Python interface to [Graphviz](http://www.graphviz.org/). -* [PyQtGraph](http://www.pyqtgraph.org/) - Interactive and realtime 2D/3D/Image plotting and science/engineering widgets. +## Robotics -## Computer Vision +_Libraries for robotics._ -*Libraries for computer vision.* +- [PythonRobotics](https://github.com/AtsushiSakai/PythonRobotics) - This is a compilation of various robotics algorithms with visualizations. -* [OpenCV](http://opencv.org/) - Open Source Computer Vision Library. -* [SimpleCV](http://simplecv.org/) - An open source framework for building computer vision applications. +## RPC Servers -## Machine Learning +_RPC-compatible servers._ + +- [RPyC](https://github.com/tomerfiliba/rpyc) (Remote Python Call) - A transparent and symmetric RPC library for Python +- [zeroRPC](https://github.com/0rpc/zerorpc-python) - zerorpc is a flexible RPC implementation based on [ZeroMQ](http://zeromq.org/) and [MessagePack](http://msgpack.org/). + +## Science + +_Libraries for scientific computing. Also see [Python-for-Scientists](https://github.com/TomNicholas/Python-for-Scientists)._ + +- [astropy](https://www.astropy.org/) - A community Python library for Astronomy. +- [bcbio-nextgen](https://github.com/chapmanb/bcbio-nextgen) - Providing best-practice pipelines for fully automated high throughput sequencing analysis. +- [bcbb](https://github.com/chapmanb/bcbb) - Collection of useful code related to biological analysis. +- [Biopython](http://biopython.org/wiki/Main_Page) - Biopython is a set of freely available tools for biological computation. +- [cclib](http://cclib.github.io/) - A library for parsing and interpreting the results of computational chemistry packages. +- [Colour](http://colour-science.org/) - Implementing a comprehensive number of colour theory transformations and algorithms. +- [Karate Club](https://github.com/benedekrozemberczki/karateclub) - Unsupervised machine learning toolbox for graph structured data. +- [manim](https://github.com/ManimCommunity/manim) - An animation engine for explanatory math videos. +- [NetworkX](https://networkx.github.io/) - A high-productivity software for complex networks. +- [NIPY](http://nipy.org) - A collection of neuroimaging toolkits. +- [NumPy](http://www.numpy.org/) - A fundamental package for scientific computing with Python. +- [ObsPy](https://github.com/obspy/obspy/wiki/) - A Python toolbox for seismology. +- [Open Babel](https://open-babel.readthedocs.io/) - A chemical toolbox designed to speak the many languages of chemical data. +- [PathSim](https://github.com/pathsim/pathsim) - A block-based system modeling and simulation framework with a browser-based visual editor. +- [PyDy](http://www.pydy.org/) - Short for Python Dynamics, used to assist with workflow in the modeling of dynamic motion. +- [PyMC](https://github.com/pymc-devs/pymc3) - Markov Chain Monte Carlo sampling toolkit. +- [RDKit](http://www.rdkit.org/) - Cheminformatics and Machine Learning Software. +- [SciPy](https://www.scipy.org/) - A Python-based ecosystem of open-source software for mathematics, science, and engineering. +- [shapely](https://github.com/shapely/shapely) - Manipulation and analysis of geometric objects in the Cartesian plane. +- [SimPy](https://gitlab.com/team-simpy/simpy) - A process-based discrete-event simulation framework. +- [statsmodels](https://github.com/statsmodels/statsmodels) - Statistical modeling and econometrics in Python. +- [SymPy](https://github.com/sympy/sympy) - A Python library for symbolic mathematics. -*Libraries for Machine Learning. See: [awesome-machine-learning](https://github.com/josephmisiti/awesome-machine-learning#python).* +## Search -* [scikit-learn](http://scikit-learn.org/) - A Python module for machine learning built on top of SciPy. -* [pattern](https://github.com/clips/pattern) - Web mining module for Python. -* [NuPIC](https://github.com/numenta/nupic) - Numenta Platform for Intelligent Computing. -* [Pylearn2](https://github.com/lisa-lab/pylearn2) - A Machine Learning library based on [Theano](https://github.com/Theano/Theano). -* [hebel](https://github.com/hannes-brt/hebel) - GPU-Accelerated Deep Learning Library in Python. -* [gensim](https://github.com/piskvorky/gensim) - Topic Modelling for Humans. -* [PyBrain](https://github.com/pybrain/pybrain) - Another Python Machine Learning Library. -* [Crab](https://github.com/muricoca/crab) - A flexible, fast recommender engine. -* [python-recsys](https://github.com/ocelma/python-recsys) - A Python library for implementing a Recommender System. -* [vowpal_porpoise](https://github.com/josephreisinger/vowpal_porpoise) - A lightweight Python wrapper for [Vowpal Wabbit](https://github.com/JohnLangford/vowpal_wabbit/). +_Libraries and software for indexing and performing search queries on data._ -## MapReduce +- [django-haystack](https://github.com/django-haystack/django-haystack) - Modular search for Django. +- [elasticsearch-dsl-py](https://github.com/elastic/elasticsearch-dsl-py) - The official high-level Python client for Elasticsearch. +- [elasticsearch-py](https://www.elastic.co/guide/en/elasticsearch/client/python-api/current/index.html) - The official low-level Python client for [Elasticsearch](https://www.elastic.co/products/elasticsearch). +- [pysolr](https://github.com/django-haystack/pysolr) - A lightweight Python wrapper for [Apache Solr](https://lucene.apache.org/solr/). +- [whoosh](http://whoosh.readthedocs.io/en/latest/) - A fast, pure Python search engine library. -*Framworks and libraries for MapReduce.* +## Serialization -* [PySpark](http://spark.apache.org/docs/latest/programming-guide.html) - The Spark Python API. -* [dpark](https://github.com/douban/dpark) - Python clone of Spark, a MapReduce alike framework in Python. -* [luigi](https://github.com/spotify/luigi) - A module that helps you build complex pipelines of batch jobs. -* [mrjob](https://github.com/Yelp/mrjob) - Run MapReduce jobs on Hadoop or Amazon Web Services. -* [dumbo](https://github.com/klbostee/dumbo) - Python module that allows one to easily write and run Hadoop programs. -* [streamparse](https://github.com/Parsely/streamparse) - Run Python code against real-time streams of data. Integrates with [Apache Storm](https://storm.incubator.apache.org/). +_Libraries for serializing complex data types._ -## Functional Programming +- [marshmallow](https://github.com/marshmallow-code/marshmallow) - A lightweight library for converting complex objects to and from simple Python datatypes. +- [orjson](https://github.com/ijl/orjson) - Fast, correct JSON library. +- [pysimdjson](https://github.com/TkTech/pysimdjson) - A Python bindings for [simdjson](https://github.com/lemire/simdjson). +- [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) - A Python wrapper around [RapidJSON](https://github.com/Tencent/rapidjson). +- [toonify](https://github.com/ScrapeGraphAI/toonify) - A compact, human-readable serialization format that reduces LLM token usage by 30-60% compared to JSON. +- [ultrajson](https://github.com/esnme/ultrajson) - A fast JSON decoder and encoder written in C with Python bindings. -*Functional Programming with Python.* +## Serverless Frameworks -* [fn.py](https://github.com/kachayev/fn.py) - Functional programming in Python: implementation of missing features to enjoy FP. -* [funcy](https://github.com/Suor/funcy) - A fancy and practical functional tools. -* [Toolz](https://github.com/pytoolz/toolz) - A collection of functional utilities for iterators, functions, and dictionaries. -* [CyToolz](https://github.com/pytoolz/cytoolz/) - Cython implementation of Toolz: High performance functional utilities. +_Frameworks for developing serverless Python code._ -## Third-party APIs +- [python-lambda](https://github.com/nficano/python-lambda) - A toolkit for developing and deploying Python code in AWS Lambda. +- [Zappa](https://github.com/zappa/Zappa) - A tool for deploying WSGI applications on AWS Lambda and API Gateway. -*Libraries for accessing third party services APIs. See: [List of Python API Wrappers and Libraries](https://github.com/realpython/list-of-python-api-wrappers).* +## Shell -* [apache-libcloud](https://libcloud.apache.org/) - One Python library for all clouds. -* [boto](https://github.com/boto/boto) - Python interface to Amazon Web Services. -* [twython](https://github.com/ryanmcgrath/twython) - A Python wrapper for the Twitter API. -* [google-api-python-client](https://github.com/google/google-api-python-client) - Google APIs Client Library for Python. -* [gspread](https://github.com/burnash/gspread) - Google Spreadsheets Python API. -* [facebook-sdk](https://github.com/pythonforfacebook/facebook-sdk) - Facebook Platform Python SDK. -* [facepy](https://github.com/jgorset/facepy) - Facepy makes it really easy to interact with Facebook's Graph API -* [gmail](https://github.com/charlierguo/gmail) - A Pythonic interface for Gmail. -* [django-wordpress](https://github.com/sunlightlabs/django-wordpress/) - WordPress models and views for Django. +_Shells built with Python._ -## DevOps Tools +- [xonsh](https://github.com/xonsh/xonsh/) - A Python-powered shell. Full-featured and cross-platform. -*Software and libraries for DevOps.* - -* [OpenStack](http://www.openstack.org/) - Open source software for building private and public clouds. -* [Ansible](https://github.com/ansible/ansible) - A radically simple IT automation platform. -* [SaltStack](https://github.com/saltstack/salt) - Infrastructure automation and management system. -* [Fabric](http://www.fabfile.org/) - A simple, Pythonic tool for remote execution and deployment. -* [Fabtools](https://github.com/ronnix/fabtools) - Tools for writing awesome Fabric files. -* [cuisine](https://github.com/sebastien/cuisine) - Chef-like functionality for Fabric. -* [psutil](https://github.com/giampaolo/psutil) - A cross-platform process and system utilities module. -* [pexpect](https://github.com/pexpect/pexpect) - Controlling interactive programs in a pseudo-terminal like GNU expect. -* [provy](https://github.com/python-provy/provy) - An easy-to-use provisioning system in Python. -* [honcho](https://github.com/nickstenning/honcho) - A Python port of [Foreman](https://github.com/ddollar/foreman), a tool for managing Procfile-based applications. -* [gunnery](https://github.com/gunnery/gunnery) - Multipurpose task execution tool for distributed systems with web-based interface. -* [fig](http://www.fig.sh/) - Fast, isolated development environments using [Docker](https://www.docker.com/). -* [hgapi](http://bitbucket.org/haard/hgapi) - Pure-Python API for Mercurial. -* [gitapi](http://bitbucket.org/haard/gitapi) - Pure-Python API for git. - -## Job Scheduler +## Specific Formats Processing -*Libraries for scheduling jobs.* +_Libraries for parsing and manipulating specific text formats._ + +- General + - [kreuzberg](https://github.com/kreuzberg-dev/kreuzberg) - High-performance document extraction library with a Rust core, supporting 62+ formats including PDF, Office, images with OCR, HTML, email, and archives. + - [tablib](https://github.com/jazzband/tablib) - A module for Tabular Datasets in XLS, CSV, JSON, YAML. +- Office + - [docxtpl](https://github.com/elapouya/python-docx-template) - Editing a docx document by jinja2 template + - [openpyxl](https://openpyxl.readthedocs.io/en/stable/) - A library for reading and writing Excel 2010 xlsx/xlsm/xltx/xltm files. + - [pyexcel](https://github.com/pyexcel/pyexcel) - Providing one API for reading, manipulating and writing csv, ods, xls, xlsx and xlsm files. + - [python-docx](https://github.com/python-openxml/python-docx) - Reads, queries and modifies Microsoft Word 2007/2008 docx files. + - [python-pptx](https://github.com/scanny/python-pptx) - Python library for creating and updating PowerPoint (.pptx) files. + - [XlsxWriter](https://github.com/jmcnamara/XlsxWriter) - A Python module for creating Excel .xlsx files. + - [xlwings](https://github.com/ZoomerAnalytics/xlwings) - A BSD-licensed library that makes it easy to call Python from Excel and vice versa. +- PDF + - [pdf_oxide](https://github.com/yfedoseev/pdf_oxide) - A fast PDF library for text extraction, image extraction, and markdown conversion, powered by Rust. + - [pdfminer.six](https://github.com/pdfminer/pdfminer.six) - Pdfminer.six is a community maintained fork of the original PDFMiner. + - [pikepdf](https://github.com/pikepdf/pikepdf) - A powerful library for reading and editing PDF files, based on qpdf. + - [PyPDF2](https://github.com/mstamy2/PyPDF2) - A library capable of splitting, merging and transforming PDF pages. + - [ReportLab](https://www.reportlab.com/opensource/) - Allowing Rapid creation of rich PDF documents. +- Markdown + - [Jimmy](https://github.com/marph91/jimmy) - Convert your notes to Markdown. + - [Mistune](https://github.com/lepture/mistune) - Fastest and full featured pure Python parsers of Markdown. + - [Python-Markdown](https://github.com/waylan/Python-Markdown) - A Python implementation of John Gruber’s Markdown. +- YAML + - [PyYAML](http://pyyaml.org/) - YAML implementations for Python. +- CSV + - [csvkit](https://github.com/wireservice/csvkit) - Utilities for converting to and working with CSV. +- Archive + - [unp](https://github.com/mitsuhiko/unp) - A command line tool that can unpack archives easily. -* [APScheduler](http://apscheduler.readthedocs.org/) - A light but powerful in-process task scheduler that lets you schedule functions. -* [django-schedule](https://github.com/thauber/django-schedule) - A calendaring app for Django. -* [doit](http://pydoit.org/) - A task runner/build tool. -* [Joblib](http://pythonhosted.org/joblib/index.html) - A set of tools to provide lightweight pipelining in Python. -* [Plan](https://github.com/fengsp/plan) - Writing crontab file in Python like a charm. -* [Spiff](https://github.com/knipknap/SpiffWorkflow) - A powerful workflow engine implemented in pure Python. -* [schedule](https://github.com/dbader/schedule) - Python job scheduling for humans. -* [TaskFlow](http://docs.openstack.org/developer/taskflow/) - A Python library that helps to make task execution easy, consistent and reliable. +## Static Site Generator -## Foreign Function Interface +_Static site generator is a software that takes some text + templates as input and produces HTML files on the output._ -*Libraries for providing foreign function interface.* +- [lektor](https://github.com/lektor/lektor) - An easy to use static CMS and blog engine. +- [makesite](https://github.com/sunainapai/makesite) - Simple, lightweight, and magic-free static site/blog generator (< 130 lines). +- [mkdocs](https://github.com/mkdocs/mkdocs/) - Markdown friendly documentation generator. +- [nikola](https://github.com/getnikola/nikola) - A static website and blog generator. +- [pelican](https://github.com/getpelican/pelican) - Static site generator that supports Markdown and reST syntax. -* [ctypes](https://docs.python.org/2/library/ctypes.html) - (Python standard library) Foreign Function Interface for Python calling C code. -* [cffi](https://pypi.python.org/pypi/cffi) - Foreign Function Interface for Python calling C code. -* [SWIG](http://www.swig.org/Doc1.3/Python.html) - Simplified Wrapper and Interface Generator. -* [PyCUDA](http://mathema.tician.de/software/pycuda/) - A Python wrapper for Nvidia's CUDA API. +## Task Queues -## High Performance +_Libraries for working with task queues._ -*Libraries for making Python faster.* +- [celery](https://docs.celeryproject.org/en/stable/) - An asynchronous task queue/job queue based on distributed message passing. +- [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. +- [mrq](https://github.com/pricingassistant/mrq) - A distributed worker task queue in Python using Redis & gevent. +- [rq](https://github.com/rq/rq) - Simple job queues for Python. -* [Cython](http://cython.org/) - Optimizing Static Complier for Python. Uses type mixins to compile Python into C or C++ modules resulting in large performance gains. -* [PyPy](http://pypy.org/) - An implementation of Python in Python. The interpreter uses black magic to make Python very fast without having to add in additional type information. -* [Stackless Python](http://www.stackless.com/) - An enhanced version of the Python. -* [Pyston](https://github.com/dropbox/pyston) - A Python implementation built using LLVM and modern JIT techniques with the goal of achieving good performance. +## Template Engine -## Microsoft Windows +_Libraries and tools for templating and lexing._ -*Python programming on Microsoft Windows.* +- [Genshi](https://genshi.edgewall.org/) - Python templating toolkit for generation of web-aware output. +- [Jinja2](https://github.com/pallets/jinja) - A modern and designer friendly templating language. +- [Mako](http://www.makotemplates.org/) - Hyperfast and lightweight templating for the Python platform. -* [pythonlibs](http://www.lfd.uci.edu/~gohlke/pythonlibs/) - Unofficial Windows(32/64-bit) binaries for Python extension packages -* [Python(x,y)](https://code.google.com/p/pythonxy/) - Scientific-applications-oriented Python Distribution based on Qt and Spyder. -* [spyder](https://code.google.com/p/spyderlib/) - IDE for the Python language with advanced editing, interactive testing, debugging and introspection features (also comes with Anaconda). +## Testing -## Network Virtualization and SDN +_Libraries for testing codebases and generating test data._ + +- Testing Frameworks + - [hypothesis](https://github.com/HypothesisWorks/hypothesis) - Hypothesis is an advanced Quickcheck style property based testing library. + - [nose2](https://github.com/nose-devs/nose2) - The successor to `nose`, based on `unittest2`. + - [pytest](https://docs.pytest.org/en/latest/) - A mature full-featured Python testing tool. + - [Robot Framework](https://github.com/robotframework/robotframework) - A generic test automation framework. + - [ScanAPI](https://pypi.org/project/scanapi/) - Automated Testing and Documentation for your REST API. + - [unittest](https://docs.python.org/3/library/unittest.html) - (Python standard library) Unit testing framework. +- Test Runners + - [green](https://github.com/CleanCut/green) - A clean, colorful test runner. + - [mamba](http://nestorsalceda.github.io/mamba/) - The definitive testing tool for Python. Born under the banner of BDD. + - [tox](https://tox.readthedocs.io/en/latest/) - Auto builds and tests distributions in multiple Python versions +- GUI / Web Testing + - [locust](https://github.com/locustio/locust) - Scalable user load testing tool written in Python. + - [PyAutoGUI](https://github.com/asweigart/pyautogui) - PyAutoGUI is a cross-platform GUI automation Python module for human beings. + - [Schemathesis](https://github.com/kiwicom/schemathesis) - A tool for automatic property-based testing of web applications built with Open API / Swagger specifications. + - [Selenium](https://pypi.org/project/selenium/) - Python bindings for [Selenium](https://selenium.dev/) [WebDriver](https://selenium.dev/documentation/webdriver/). + - [splinter](https://github.com/cobrateam/splinter) - Open source tool for testing web applications. +- Mock + - [doublex](https://pypi.org/project/doublex/) - Powerful test doubles framework for Python. + - [freezegun](https://github.com/spulec/freezegun) - Travel through time by mocking the datetime module. + - [httmock](https://github.com/patrys/httmock) - A mocking library for requests for Python 2.6+ and 3.2+. + - [httpretty](https://github.com/gabrielfalcao/HTTPretty) - HTTP request mock tool for Python. + - [mock](https://docs.python.org/3/library/unittest.mock.html) - (Python standard library) A mocking and patching library. + - [mocket](https://github.com/mindflayer/python-mocket) - A socket mock framework with gevent/asyncio/SSL support. + - [responses](https://github.com/getsentry/responses) - A utility library for mocking out the requests Python library. + - [VCR.py](https://github.com/kevin1024/vcrpy) - Record and replay HTTP interactions on your tests. +- Object Factories + - [factory_boy](https://github.com/FactoryBoy/factory_boy) - A test fixtures replacement for Python. + - [mixer](https://github.com/klen/mixer) - Another fixtures replacement. Supports Django, Flask, SQLAlchemy, Peewee and etc. + - [polyfactory](https://github.com/litestar-org/polyfactory) - mock data generation library with support to classes (continuation of `pydantic-factories`) +- Code Coverage + - [coverage](https://pypi.org/project/coverage/) - Code coverage measurement. +- Fake Data + - [faker](https://github.com/joke2k/faker) - A Python package that generates fake data. + - [mimesis](https://github.com/lk-geimfari/mimesis) - is a Python library that help you generate fake data. -*Tools and libraries for Virtual Networking and SDN (Software Defined Networking).* +## Text Processing -* [Mininet](http://mininet.org/) - A popular network emulator and API written in Python. -* [POX](http://www.noxrepo.org/pox/about-pox/) - An open source development platform for Python-based Software Defined Networking (SDN) control applications, such as OpenFlow SDN controllers. -* [Pyretic](http://frenetic-lang.org/pyretic/) - A member of the Frenetic family of SDN programming languages that provides powerful abstractions over network switches or emulators. -* [SDX Platform](https://github.com/sdn-ixp/internet2award) - SDN based IXP implementation that leverages Mininet, POX and Pyretic. +_Libraries for parsing and manipulating plain texts._ + +- General + - [chardet](https://github.com/chardet/chardet) - Python 2/3 compatible character encoding detector. + - [difflib](https://docs.python.org/3/library/difflib.html) - (Python standard library) Helpers for computing deltas. + - [ftfy](https://github.com/LuminosoInsight/python-ftfy) - Makes Unicode text less broken and more consistent automagically. + - [Levenshtein](https://github.com/ztane/python-Levenshtein/) - Fast computation of Levenshtein distance and string similarity. + - [pangu.py](https://github.com/vinta/pangu.py) - Paranoid text spacing. + - [pyfiglet](https://github.com/pwaller/pyfiglet) - An implementation of figlet written in Python. + - [pypinyin](https://github.com/mozillazg/python-pinyin) - Convert Chinese hanzi (漢字) to pinyin (拼音). + - [textdistance](https://github.com/orsinium/textdistance) - Compute distance between sequences with 30+ algorithms. + - [unidecode](https://pypi.org/project/Unidecode/) - ASCII transliterations of Unicode text. +- Slugify + - [awesome-slugify](https://github.com/dimka665/awesome-slugify) - A Python slugify library that can preserve unicode. + - [python-slugify](https://github.com/un33k/python-slugify) - A Python slugify library that translates unicode to ASCII. + - [unicode-slugify](https://github.com/mozilla/unicode-slugify) - A slugifier that generates unicode slugs with Django as a dependency. +- Unique identifiers + - [hashids](https://github.com/davidaurelio/hashids-python) - Implementation of [hashids](http://hashids.org) in Python. + - [shortuuid](https://github.com/skorokithakis/shortuuid) - A generator library for concise, unambiguous and URL-safe UUIDs. +- Parser + - [pygments](http://pygments.org/) - A generic syntax highlighter. + - [pyparsing](https://github.com/pyparsing/pyparsing) - A general purpose framework for generating parsers. + - [python-nameparser](https://github.com/derek73/python-nameparser) - Parsing human names into their individual components. + - [python-phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) - Parsing, formatting, storing and validating international phone numbers. + - [python-user-agents](https://github.com/selwin/python-user-agents) - Browser user agent parser. + - [sqlparse](https://github.com/andialbrecht/sqlparse) - A non-validating SQL parser. -## Hardware +## URL Manipulation -*Libraries for programming with hardware.* +_Libraries for parsing URLs._ -* [PyUserInput](https://github.com/SavinaRoja/PyUserInput) - A module for cross-platform control of the mouse and keyboard. -* [wifi](https://wifi.readthedocs.org/) - A Python library and command line tool for working with WiFi on Linux. -* [scapy](http://www.secdev.org/projects/scapy/) - A brilliant packet manipulation library. -* [ino](http://inotool.org/) - Command line toolkit for working with [Arduino](http://www.arduino.cc/). -* [Pyro](http://pyrorobotics.com/) - Python Robotics. +- [furl](https://github.com/gruns/furl) - A small Python library that makes parsing and manipulating URLs easy. +- [purl](https://github.com/codeinthehole/purl) - A simple, immutable URL class with a clean API for interrogation and manipulation. +- [webargs](https://github.com/marshmallow-code/webargs) - A friendly library for parsing HTTP request arguments with built-in support for popular web frameworks. -## Compatibility +## Video -*Libraries for migrating from Python 2 to 3.* +_Libraries for manipulating video and GIFs._ -* [Six](https://pypi.python.org/pypi/six) - Python 2 and 3 compatibility utilities. -* [Python-Future](http://python-future.org/index.html) - The missing compatibility layer between Python 2 and Python 3. -* [Python-Modernize](https://github.com/mitsuhiko/python-modernize) - Modernizes Python code for eventual Python 3 migration. +- [moviepy](https://zulko.github.io/moviepy/) - A module for script-based movie editing with many formats, including animated GIFs. +- [scikit-video](https://github.com/aizvorski/scikit-video) - Video processing routines for SciPy. +- [vidgear](https://github.com/abhiTronix/vidgear) - Most Powerful multi-threaded Video Processing framework. -## Miscellaneous +## Web Asset Management -*Useful libraries or tools that don't fit in the categories above.* +_Tools for managing, compressing and minifying website assets._ -* [pluginbase](https://github.com/mitsuhiko/pluginbase) - A simple but flexible plugin system for Python. -* [itsdangerous](https://github.com/mitsuhiko/itsdangerous) - Various helpers to pass trusted data to untrusted environments. -* [blinker](https://github.com/jek/blinker) - A fast Python in-process signal/event dispatching system. -* [Pychievements](https://github.com/PacketPerception/pychievements) - A framework for creating and tracking achievements. +- [django-compressor](https://github.com/django-compressor/django-compressor) - Compresses linked and inline JavaScript or CSS into a single cached file. +- [django-pipeline](https://github.com/jazzband/django-pipeline) - An asset packaging library for Django. +- [django-storages](https://github.com/jschneier/django-storages) - A collection of custom storage back ends for Django. +- [fanstatic](http://www.fanstatic.org/en/latest/) - Packages, optimizes, and serves static file dependencies as Python packages. +- [flask-assets](https://github.com/miracle2k/flask-assets) - Helps you integrate webassets into your Flask app. +- [webassets](https://github.com/miracle2k/webassets) - Bundles, optimizes, and manages unique cache-busting URLs for static resources. -## Algorithms and Design Patterns +## Web Content Extracting -*Python implementation of algorithms and design patterns.* +_Libraries for extracting web contents._ -* [python-patterns](https://github.com/faif/python-patterns) - A collection of design patterns in Python. -* [algorithms](https://github.com/nryoung/algorithms) - module of algorithms for Python. +- [html2text](https://github.com/Alir3z4/html2text) - Convert HTML to Markdown-formatted text. +- [lassie](https://github.com/michaelhelmick/lassie) - Web Content Retrieval for Humans. +- [micawber](https://github.com/coleifer/micawber) - A small library for extracting rich content from URLs. +- [newspaper](https://github.com/codelucas/newspaper) - News extraction, article extraction and content curation in Python. +- [python-readability](https://github.com/buriy/python-readability) - Fast Python port of arc90's readability tool. +- [requests-html](https://github.com/psf/requests-html) - Pythonic HTML Parsing for Humans. +- [sumy](https://github.com/miso-belica/sumy) - A module for automatic summarization of text documents and HTML pages. +- [textract](https://github.com/deanmalmgren/textract) - Extract text from any document, Word, PowerPoint, PDFs, etc. +- [toapi](https://github.com/gaojiuli/toapi) - Every web site provides APIs. -## Editor Plugins +## Web Crawling -*Plugins for editors and IDEs.* +_Libraries to automate web scraping._ -* Vim - * [Python-mode](https://github.com/klen/python-mode) - An all in one plugin for turning Vim into a Python IDE. - * [Jedi-vim](https://github.com/davidhalter/jedi-vim) - Vim bindings for the [Jedi](https://github.com/davidhalter/jedi) autocompletion library for Python. - * [YouCompleteMe](https://github.com/Valloric/YouCompleteMe) - Includes [Jedi](https://github.com/davidhalter/jedi)-based completion engine for Python -* Emacs - * [Elpy](https://github.com/jorgenschaefer/elpy) - Emacs Python Development Environment. -* Sublime Text - * [SublimeJEDI](https://github.com/srusskih/SublimeJEDI) - A Sublime Text plugin to the awesome autocomplete library [Jedi](https://github.com/davidhalter/jedi). - * [Anaconda](https://github.com/DamnWidget/anaconda) - Anaconda turns your Sublime Text 3 in a full featured Python development IDE. -* Atom - * [Linter](https://github.com/AtomLinter/Linter) - A static code analysis tool for Atom. - * [Linter-flake8](https://github.com/AtomLinter/linter-flake8) - An addon to `linter`, that acts as an interface for `flake8`. - * [virtualenv](https://github.com/jhutchins/virtualenv) - Atom package for virtualenv management. +- [browser-use](https://github.com/browser-use/browser-use) - Make websites accessible for AI agents with easy browser automation. +- [crawl4ai](https://github.com/unclecode/crawl4ai) - An open-source, LLM-friendly web crawler that provides lightning-fast, structured data extraction specifically designed for AI agents. +- [feedparser](https://github.com/kurtmckee/feedparser) - Universal feed parser. +- [grab](https://github.com/lorien/grab) - Site scraping framework. +- [mechanicalsoup](https://github.com/MechanicalSoup/MechanicalSoup) - A Python library for automating interaction with websites. +- [scrapy](https://github.com/scrapy/scrapy) - A fast high-level screen scraping and web crawling framework. -# Resources +## Web Frameworks -Where to discover new Python libraries. +_Traditional full stack web frameworks. Also see [RESTful API](https://github.com/vinta/awesome-python#restful-api)._ + +- Synchronous + - [django](https://github.com/django/django) - The most popular web framework in Python. + - [awesome-django](https://github.com/shahraizali/awesome-django) + - [flask](https://github.com/pallets/flask) - A microframework for Python. + - [awesome-flask](https://github.com/humiaozuzu/awesome-flask) + - [pyramid](https://pylonsproject.org/) - 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) + - [masonite](https://github.com/MasoniteFramework/masonite) - The modern and developer centric Python web framework. +- Asynchronous + - [Litestar](https://github.com/litestar-org/litestar) - Production-ready, capable and extensible ASGI Web framework. + - [microdot](https://github.com/miguelgrinberg/microdot) - The impossibly small web framework for Python and MicroPython. + - [reflex](https://github.com/reflex-dev/reflex) – A framework for building reactive, full-stack web applications entirely with python . + - [tornado](https://github.com/tornadoweb/tornado) - A web framework and asynchronous networking library. -## Websites +## WebSocket -* [r/Python](http://www.reddit.com/r/python) - News about Python. -* [Python 3 Wall of Superpowers](http://python3wos.appspot.com/) - Too many popular Python packages don't support Python 3. -* [Trending Python repositories on GitHub today](https://github.com/trending?l=python) - Good place to find new Python libraries. -* [Python Hackers](http://pythonhackers.com/open-source/) - List of top 400 projects in GitHub. -* [CoolGithubProjects](http://coolgithubprojects.com/) - Sharing cool github projects just got easier! -* [Full Stack Python](http://www.fullstackpython.com/) - Plain English explanations for every layer of the Python web application stack. -* [Django Packages](https://www.djangopackages.com/) - A directory of reusable apps, sites, tools, and more for Django projects. +_Libraries for working with WebSocket._ -## Weekly +- [autobahn-python](https://github.com/crossbario/autobahn-python) - WebSocket & WAMP for Python on Twisted and [asyncio](https://docs.python.org/3/library/asyncio.html). +- [channels](https://github.com/django/channels) - Developer-friendly asynchrony for Django. +- [websockets](https://github.com/aaugustin/websockets) - A library for building WebSocket servers and clients with a focus on correctness and simplicity. -* [Pycoder's Weekly](http://pycoders.com/) -* [Python Weekly](http://www.pythonweekly.com/) -* [Import Python Newsletter](http://importpython.com/newsletter/) +## WSGI Servers -## Twitter +_WSGI-compatible web servers._ -* [@pypi](https://twitter.com/pypi) -* [@planetpython](https://twitter.com/planetpython) -* [@getpy](https://twitter.com/getpy) -* [@pycoders](https://twitter.com/pycoders) -* [@PythonWeekly](https://twitter.com/PythonWeekly) -* [@pythontrending](https://twitter.com/pythontrending) +- [gunicorn](https://github.com/benoitc/gunicorn) - Pre-forked, ported from Ruby's Unicorn project. +- [uwsgi](https://uwsgi-docs.readthedocs.io/en/latest/) - A project aims at developing a full stack for building hosting services, written in C. +- [waitress](https://github.com/Pylons/waitress) - Multi-threaded, powers Pyramid. +- [werkzeug](https://github.com/pallets/werkzeug) - A WSGI utility library for Python that powers Flask and can easily be embedded into your own projects. -# Other Awesome Lists +# Resources -List of lists. +Where to discover learning resources or new Python libraries. -* Python - * [pycrumbs](https://github.com/kirang89/pycrumbs/blob/master/pycrumbs.md) - * [pythonidae](https://github.com/svaksha/pythonidae) - * [python-github-projects](https://github.com/checkcheckzz/python-github-projects) - * [python_reference](https://github.com/rasbt/python_reference) - * [easy-python](http://easy-python.readthedocs.org/) -* Monty - * [awesome-awesomeness](https://github.com/bayandin/awesome-awesomeness) - * [lists](https://github.com/jnv/lists) +## Newsletters -# [Contributing](https://github.com/vinta/awesome-python/blob/master/CONTRIBUTING.md) +- [Awesome Python Newsletter](http://python.libhunt.com/newsletter) +- [Pycoder's Weekly](https://pycoders.com/) +- [Python Tricks](https://realpython.com/python-tricks/) +- [Python Weekly](https://www.pythonweekly.com/) -Your contributions are always welcome! +## Podcasts -# Upcoming Event +- [Django Chat](https://djangochat.com/) +- [PyPodcats](https://pypodcats.live) +- [Python Bytes](https://pythonbytes.fm) +- [Python Test](https://podcast.pythontest.com/) +- [Talk Python To Me](https://talkpython.fm/) +- [The Real Python Podcast](https://realpython.com/podcasts/rpp/) -## PyCon APAC 2015 +# Contributing -[![PyCon APAC 2015](https://tw.pycon.org/2015apac/images/Logo_red_1280.svg)](https://tw.pycon.org/2015apac/) +Your contributions are always welcome! Please take a look at the [contribution guidelines](https://github.com/vinta/awesome-python/blob/master/CONTRIBUTING.md) first. -#### Tutorials May 30-31, Conference June 5-7, Sprints June 8, Taipei, Taiwan +--- -Mark your calendar now and stay up to date on the must-attend event in 2015. Join the biggest Python conference in Asia. To find more on [https://tw.pycon.org/2015apac/](https://tw.pycon.org/2015apac/). +If you have any question about this opinionated list, do not hesitate to contact [@VintaChen](https://twitter.com/VintaChen) on Twitter. diff --git a/SPONSORSHIP.md b/SPONSORSHIP.md new file mode 100644 index 000000000..3f9e8a68e --- /dev/null +++ b/SPONSORSHIP.md @@ -0,0 +1,36 @@ +# Sponsor awesome-python + +**The #10 most-starred repository on all of GitHub.** + +awesome-python is where Python developers go to discover tools. When someone searches Google for "best Python libraries," they land here. When ChatGPT recommends Python tools, it references this list. When developers evaluate frameworks, this is the list they check. + +Your sponsorship puts your product in front of developers at the exact moment they're choosing what to use. + +## By the Numbers + +| Metric | Value | +| ------------ | ---------------------------------------------------------------------------------------------------- | +| Stars | ![Stars](https://img.shields.io/github/stars/vinta/awesome-python?style=for-the-badge) | +| Forks | ![Forks](https://img.shields.io/github/forks/vinta/awesome-python?style=for-the-badge) | +| Watchers | ![Watchers](https://img.shields.io/github/watchers/vinta/awesome-python?style=for-the-badge) | +| Contributors | ![Contributors](https://img.shields.io/github/contributors/vinta/awesome-python?style=for-the-badge) | + +Top referrers: GitHub, Google Search, YouTube, Reddit, ChatGPT — developers actively searching for and evaluating Python tools. + +## Sponsorship Tiers + +### Logo Sponsor — $500/month (2 slots) + +Your logo and a one-line description at the top of the README, seen by every visitor. + +### Link Sponsor — $150/month (5 slots) + +A text link with your product name at the top of the README, right below logo sponsors. + +## Past Sponsors + +- [Warp](https://www.warp.dev/) - https://github.com/vinta/awesome-python/pull/2766 + +## Get Started + +Email [vinta.chen@gmail.com](mailto:vinta.chen@gmail.com?subject=awesome-python%20Sponsorship) with your company name and preferred tier. Most sponsors are set up within 24 hours. diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 000000000..0f6ced663 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +awesome-python.com \ No newline at end of file diff --git a/docs/css/extra.css b/docs/css/extra.css new file mode 100644 index 000000000..1230d796a --- /dev/null +++ b/docs/css/extra.css @@ -0,0 +1,9 @@ +@media (min-width: 960px) { + html { + scroll-behavior: smooth; + } + + .md-content__inner > ul:nth-child(5) { + display: none; + } +} diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 000000000..67a0373a4 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,26 @@ +site_name: Awesome Python +site_url: https://awesome-python.com +site_description: A curated list of awesome Python frameworks, libraries and software +site_author: Vinta Chen +repo_name: vinta/awesome-python +repo_url: https://github.com/vinta/awesome-python +theme: + name: material + palette: + primary: red + accent: pink +extra: + social: + - type: github + link: https://github.com/vinta + - type: twitter + link: https://twitter.com/vinta + - type: linkedin + link: https://www.linkedin.com/in/vinta +google_analytics: + - UA-510626-7 + - auto +extra_css: + - css/extra.css +nav: + - "Life is short, you need Python.": "index.md" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..89d64c303 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +mkdocs==1.0.4 +mkdocs-material==4.0.2 diff --git a/sort.py b/sort.py old mode 100644 new mode 100755 index d8091009c..431bd02b4 --- a/sort.py +++ b/sort.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # coding: utf-8 """ @@ -13,6 +14,33 @@ and flattening the end structure into a list of lines. Revision 2 maybe ^.^. """ +def sort_blocks(): + # First, we load the current README into memory + with open('README.md', 'r') as read_me_file: + read_me = read_me_file.read() + + # Separating the 'table of contents' from the contents (blocks) + table_of_contents = ''.join(read_me.split('- - -')[0]) + blocks = ''.join(read_me.split('- - -')[1]).split('\n# ') + for i in range(len(blocks)): + if i == 0: + blocks[i] = blocks[i] + '\n' + else: + blocks[i] = '# ' + blocks[i] + '\n' + + # Sorting the libraries + inner_blocks = sorted(blocks[0].split('##')) + for i in range(1, len(inner_blocks)): + if inner_blocks[i][0] != '#': + inner_blocks[i] = '##' + inner_blocks[i] + inner_blocks = ''.join(inner_blocks) + + # Replacing the non-sorted libraries by the sorted ones and gathering all at the final_README file + blocks[0] = inner_blocks + final_README = table_of_contents + '- - -' + ''.join(blocks) + + with open('README.md', 'w+') as sorted_file: + sorted_file.write(final_README) def main(): # First, we load the current README into memory as an array of lines @@ -41,10 +69,15 @@ def main(): with open('README.md', 'w+') as sorted_file: # Then all of the blocks are sorted individually - blocks = [''.join(sorted(block, key=lambda s: s.lower())) for block in blocks] + blocks = [ + ''.join(sorted(block, key=str.lower)) for block in blocks + ] # And the result is written back to README.md sorted_file.write(''.join(blocks)) + # Then we call the sorting method + sort_blocks() + if __name__ == "__main__": main()