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>
Adds a workflow_run trigger so the site is rebuilt whenever fresh
star data lands on master, in addition to the existing push trigger.
The build job guard ensures it only runs on direct pushes or when
the upstream workflow concluded successfully.
Co-Authored-By: Claude <noreply@anthropic.com>
Runs on a nightly schedule, installs deps with uv, calls make
fetch_github_stars, and pushes an update commit only when the
star data file actually changed.
Co-Authored-By: Claude <noreply@anthropic.com>
Rename the Makefile target from fetch_stats to fetch_github_stars to
match the script name. Remove CACHE_MAX_AGE_DAYS and the staleness
check so every run fetches all repos unconditionally.
Co-Authored-By: Claude <noreply@anthropic.com>
Switches install step from --no-dev to --group build for explicit
dependency group selection, and replaces the bare python invocation
with `make build` to use the canonical build entrypoint.
Co-Authored-By: Claude <noreply@anthropic.com>
Reformats dict and list literals to trailing-comma multiline style
throughout. Also copies README.md to llms.txt in the site output so
LLM crawlers can discover the full content.
Co-Authored-By: Claude <noreply@anthropic.com>
Switch readme_parser.py from regex-based parsing to markdown-it-py for
more robust and maintainable Markdown AST traversal. Update build pipeline,
templates, styles, and JS to support the new parser output. Refresh GitHub
stars data and update tests to match new parser behavior.
Co-Authored-By: Claude <noreply@anthropic.com>