Group the Table of Contents entries under bold section headers (AI & ML,
Web & API, Data & Science, etc.) so the README is easier to navigate at
a glance. Update CONTRIBUTING.md to reflect that new sections should be
placed under the appropriate thematic group instead of in a flat list.
Co-Authored-By: Claude <noreply@anthropic.com>
Group flat lists into labeled subcategories to improve scannability and navigation.
Also remove entries that don't meet curation standards and fix the toga repo URL.
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove subcategory groupings (General, Financial Data, Mail Servers, etc.) in favor of flat alphabetical lists
- Rename sections to plural forms: Downloader -> Downloaders, Job Scheduler -> Job Schedulers, Static Site Generator -> Static Site Generators, Template Engine -> Template Engines, Web Content Extracting -> Web Content Extraction
- Rename Specific Formats Processing -> File Format Processing
- Move financial data libraries (akshare, edgartools, openbb, yfinance) from Downloaders to Data Analysis
- Fix TOC ordering: Database/Database Drivers, Web APIs, Web Servers entries moved to alphabetical positions
Co-Authored-By: Claude <noreply@anthropic.com>
- Merge ASGI Servers and WSGI Servers into a single Web Servers section
- Merge RESTful API and GraphQL into Web APIs section
- Move Permissions entries under Authentication as a subsection
- Move Refactoring entries under Code Analysis as a subsection
- Move Serverless Frameworks entries under DevOps as a subsection
- Move Shell (xonsh) under CLI Tools
- Move Internationalization (babel) under Text Processing
- Move Robotics (PythonRobotics) under Science
- Remove standalone Internationalization, Permissions, Refactoring, Serverless Frameworks, Shell, Robotics, and GraphQL sections
- Fix capitalization in TOC entries (Penetration Testing, Framework Agnostic)
Co-Authored-By: Claude <noreply@anthropic.com>
Entries appearing in more than one category were previously emitted as
separate rows. They are now deduplicated in build.py by URL, collecting
all category and group names into lists.
The template encodes those lists as pipe-delimited data attributes
(data-cats, data-groups) and renders a tag button per category.
The JS filter is updated to split on '||' and check for membership,
so clicking any category tag correctly shows the merged row.
Co-Authored-By: Claude <noreply@anthropic.com>
Add active-state press feedback (scale transform) to buttons, filter clear,
and tags. Add moz-osx-font-smoothing for consistent antialiasing on Firefox/Mac.
Apply text-wrap: balance to headings and text-wrap: pretty to body text and
expanded row descriptions. Add text-underline-offset to links and highlight
active table rows with bg-hover.
Co-Authored-By: Claude <noreply@anthropic.com>
- Relocate group tag from expand row to category column so it appears inline beside the category tag
- Add margin between stacked tags with .col-cat .tag + .tag spacing rule
- Remove fixed width from .col-cat; narrow .col-name from 35% to 30% to give category column room
- Hide .tag-group on screens ≤900px and widen .col-name to 50% to reclaim space
Co-Authored-By: Claude <noreply@anthropic.com>
Rename 'Python' to 'Python for VSCode' in the Editor Plugins section
to disambiguate the extension from the Python language itself.
Co-Authored-By: Claude <noreply@anthropic.com>
Switch table-layout back to auto on mobile to let columns size naturally,
add uniform cell padding overrides, shrink num/arrow columns further,
pin stars column width, reduce edge padding, and left-align the number
column to avoid awkward right-aligned single digits.
Co-Authored-By: Claude <noreply@anthropic.com>
AI & ML: AI and Agents, Machine Learning, Deep Learning, Computer Vision,
Natural Language Processing, Recommender Systems, Robotics.
Data & Science: Data Analysis, Data Validation, Data Visualization,
Geolocation, Science, Quantum Computing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the Specialized catchall group. Redistribute its categories:
- Web & API: Admin Panels, CMS, Email, Static Site Generator, URL Manipulation
- AI & Data: Geolocation, Robotics
- Content & Media: Game Development, Internationalization
- System & Runtime: Date and Time, Hardware, Microsoft Windows
- Development Tools: Algorithms and Design Patterns
Only Miscellaneous remains ungrouped (falls into Other).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New category for LLM integrations, agent frameworks, and AI applications.
Move agno, instructor, langchain, llama_index, praisonai, pydantic-ai,
ragflow from Machine Learning. Add autoresearch (karpathy).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Prefer PyPI package name as display name so developers can copy it
directly to pip install. Fall back to GitHub repo name if not on PyPI.
Also update examples to use lowercase PyPI names.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update 79 entries where the display name differed from the GitHub
repository name only in casing (e.g. NumPy→numpy, LangChain→langchain,
SQLAlchemy→sqlalchemy, DuckDB→duckdb).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
docling (document-to-structured-data conversion) and textract (text
extraction from Office/PDF files) are document parsing tools, not
data analysis or web scraping tools, so Text Processing > General
is a more accurate placement.
Co-Authored-By: Claude <noreply@anthropic.com>
The financial data tools (akshare, edgartools, OpenBB, yfinance) are a
distinct cluster from general-purpose downloaders (s3cmd, youtube-dl),
so grouping them into subcategories improves discoverability.
Co-Authored-By: Claude <noreply@anthropic.com>
Beanie is an ODM (Object-Document Mapper), not a raw database driver,
so it fits better under ORM > NoSQL Databases alongside mongoengine and ODMantic.
Co-Authored-By: Claude <noreply@anthropic.com>
streamlit is primarily a data visualization and dashboard framework,
so it better fits the Data Visualization category.
Co-Authored-By: Claude <noreply@anthropic.com>
markitdown converts documents to Markdown, so it belongs under the
Markdown subcategory of Text Processing rather than the generic Files
section.
Co-Authored-By: Claude <noreply@anthropic.com>
Remove the third-party pytz in favour of the stdlib zoneinfo module
(Python 3.9+), which ships the IANA tz database directly.
Co-Authored-By: Claude <noreply@anthropic.com>
- Replace 'Curated by @vinta since 2014' with 'Maintained by @vinta
and @JinyangWang27' to reflect the new co-maintainer
- Increase .hero-sub font size from --text-sm to --text-base for
better readability
Co-Authored-By: Claude <noreply@anthropic.com>
Positive criteria (Quality Requirements, Acceptance Criteria, Entry
Format) now appear before the rejection list, reducing friction for
contributors reading top-to-bottom. Adds a note that GitHub URLs are
preferred because awesome-python.com ranks entries by GitHub stars.
Co-Authored-By: Claude <noreply@anthropic.com>
Projects on awesome-python.com are ranked by GitHub stars; linking
directly to GitHub enables star fetching and improves discoverability.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed the 'if: github.event_name == schedule' guard so the step also
runs on manual dispatches and push-triggered deploys, not only on the
nightly schedule.
Co-Authored-By: Claude <noreply@anthropic.com>
Introduce CACHE_MAX_AGE_HOURS (12 h) and filter current_repos before
the fetch loop so repos that were updated recently are not re-requested.
Prints a breakdown of fetched vs cached count.
Co-Authored-By: Claude <noreply@anthropic.com>
Replace the separate fetch-github-stars.yml workflow (which committed
star data back to git) with an inline fetch step in deploy-website.yml.
Star data is now stored in Actions cache between runs, eliminating the
workflow_run trigger chain and the need to track github_stars.json in
the repository.
Co-Authored-By: Claude <noreply@anthropic.com>
The generic email 'github-actions[bot]@users.noreply.github.com' does not
match GitHub's actual bot account. Using the numeric-prefixed form
'41898282+github-actions[bot]@users.noreply.github.com' ensures commits
made by the workflow are correctly attributed to the bot account.
Co-Authored-By: Claude <noreply@anthropic.com>