Files
awesome-python/CONTRIBUTING.md
Vinta Chen bec981806a refactor: reorganize thematic groups and reorder sections within groups
Restructures the top-level ToC groups for better logical cohesion:
- Split 'Web & API' into 'Web' (frameworks, servers, CMS) and
  'HTTP & Scraping' (clients, scraping, URL, email)
- Move 'Database & Storage' earlier in the ToC, before 'Data & Science'
- Merge 'Web Content Extraction' and 'Web Crawling' into a single
  'Web Scraping' section
- Rename 'Content & Media' to 'Text & Documents' and 'Media' (split)
- Rename 'System & Runtime' to 'Python Language' and 'Python Toolchain'
- Rename 'Security & Auth' to 'Security'; move Authentication to Web group
- Rename 'Development Tools' to 'Developer Tools', 'DevOps & Infrastructure' to 'DevOps'
- Reorder sections within groups to reflect learning progression
  (e.g., Deep Learning before Machine Learning in AI & ML)
- Move Hardware and Microsoft Windows to Miscellaneous group
- Add s3cmd to DevOps and youtube-dl to Command-line Tools
- Update CONTRIBUTING.md example group names to match new labels

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-20 21:06:08 +08:00

3.5 KiB

Contributing

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

Use GitHub repository URLs whenever possible. Projects linked to a GitHub repo are ranked higher on awesome-python.com.

Naming Convention

Use the PyPI package name as the display name so developers can copy it directly to pip install. Check the canonical name at https://pypi.org/pypi/{package}/json. If the project is not on PyPI, use the GitHub repository name instead.

Standard Entry

- [pypi-name](https://github.com/owner/repo) - Description ending with period.

Standard Library Module

- [module](https://docs.python.org/3/library/module.html) - (Python standard library) Description.

Fork of Another Project

- [new-name](https://github.com/owner/new-name) - Description ([original-name](original-url) fork).

Entry with Related Awesome List

- [project](https://github.com/owner/project) - Description.
  - [awesome-project](https://github.com/someone/awesome-project)

Subcategory Format

- Subcategory Name
  - [project](url) - Description.

Adding a New Section

  1. Add section description in italics: *Libraries for doing X.*
  2. Add the section under the appropriate thematic group (e.g., AI & ML, Web, Data & Science)
  3. Add the section title to the Table of Contents under its group
  4. Keep entries in alphabetical order within each category

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.

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