Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
bd73b1f
remove zipline
JinyangWang27 Mar 18, 2026
1f7757f
Merge pull request #2968 from JinyangWang27/remove-zipline
JinyangWang27 Mar 18, 2026
4af84da
remove mkdocs site infrastructure
vinta Mar 18, 2026
177183d
add custom website build system
vinta Mar 18, 2026
cd7b8f6
update README description and remove Resources section
vinta Mar 18, 2026
2fe0f5c
ci: bump actions/checkout to v6 and upload-pages-artifact to v4
vinta Mar 18, 2026
87a16f4
build: load .env in Makefile and rename fetch_stars to site_fetch_stats
vinta Mar 18, 2026
7eb9b11
data: remove zipline entry from github_stars.json
vinta Mar 18, 2026
a732751
Merge pull request #2969 from vinta/feature/relaunch-website
vinta Mar 18, 2026
c5caa5a
ci: hardcode deployment URL to https://awesome-python.com
vinta Mar 18, 2026
5fa7c7d
feat(website): add markdown-it-py README parser and inline renderer t…
vinta Mar 18, 2026
1c67c9f
feat: replace regex README parser with markdown-it-py AST parser
vinta Mar 18, 2026
3d015bc
feat(parser): implement entry extraction from bullet list AST nodes
vinta Mar 18, 2026
a838098
feat: implement HTML rendering for readme sections
vinta Mar 18, 2026
03ac212
test: add integration tests against the real README.md
vinta Mar 18, 2026
0f37497
refactor: extract parsing logic from build.py into readme_parser module
vinta Mar 18, 2026
143abbf
build: remove markdown dependency, replaced by markdown-it-py
vinta Mar 18, 2026
af3baab
refactor: consolidate load_cache into build.load_stars
vinta Mar 18, 2026
266a6b6
simplify: remove redundant _has_description, unused param, merge loops
vinta Mar 18, 2026
74bba50
build: restructure dependency groups and add watchdog
vinta Mar 18, 2026
45391b8
build: simplify Makefile targets and add live-reload preview
vinta Mar 18, 2026
9571899
build: add project metadata and restructure dependency groups
vinta Mar 18, 2026
25ec0c3
feat: extract inline favicon to static SVG file
vinta Mar 18, 2026
15a38ca
style: simplify footer layout and update links
vinta Mar 18, 2026
95b6b3c
feat: improve table accessibility and mobile expand tags
vinta Mar 18, 2026
280f250
feat: migrate README parser to markdown-it-py and refresh website
vinta Mar 18, 2026
539edc4
Merge pull request #2971 from vinta/feature/markdown-it-py-parser
vinta Mar 18, 2026
ab18c7e
refactor: reformat build.py to Black style and add llms.txt output
vinta Mar 18, 2026
b6d1bf9
ci: use uv dependency groups and Makefile target for deploy workflow
vinta Mar 18, 2026
d65c6cc
refactor: rename fetch_stats target and remove cache age gating
vinta Mar 18, 2026
bbe145c
ci: add workflow to fetch and commit GitHub stars daily
vinta Mar 18, 2026
bfed6a5
ci: trigger deploy after fetch-github-stars workflow succeeds
vinta Mar 18, 2026
3c3f371
fix: use canonical GitHub Actions bot email with numeric ID
vinta Mar 18, 2026
0d9dfb2
ci: consolidate star fetch into deploy workflow using Actions cache
vinta Mar 18, 2026
4845157
gitignore website/data
vinta Mar 18, 2026
6148c13
feat: skip fetching repos whose cache entry is still fresh
vinta Mar 18, 2026
957d685
ci: run fetch-stars step on every workflow trigger
vinta Mar 18, 2026
fa00f10
Merge pull request #2972 from vinta/feature/fetch-stats-workflow
vinta Mar 18, 2026
c1a4e69
fix: replace non-GitHub URLs with GitHub repo URLs in README
vinta Mar 18, 2026
f7a5ed8
docs: move Automatic Rejection section to end; note GitHub URL prefer…
vinta Mar 18, 2026
56ccdfa
Merge pull request #2973 from vinta/fix/replace-non-github-urls-with-…
vinta Mar 18, 2026
7b80024
feat(website): add co-maintainer credit and bump hero-sub font size
vinta Mar 18, 2026
0cd4cca
chore(dates-times): replace pytz with zoneinfo
vinta Mar 18, 2026
5f44045
chore(files): move markitdown to Text Processing > Markdown
vinta Mar 18, 2026
02dab03
chore(text-processing): restructure Markdown subsection and add TOML
vinta Mar 18, 2026
d48c1b8
docs: move streamlit to Data Visualization from Admin Panels
vinta Mar 18, 2026
057081f
docs: move Beanie to ORM > NoSQL Databases from Database Drivers
vinta Mar 18, 2026
a7c5d84
docs: split Downloader into General and Financial Data subcategories
vinta Mar 18, 2026
79c0be0
docs: move docling and textract to Text Processing
vinta Mar 18, 2026
65db5ab
Merge pull request #2975 from vinta/chore/cleanup
vinta Mar 18, 2026
4a0db0d
docs: match project display names to their GitHub repo names
vinta Mar 18, 2026
fb3112d
docs: match 11 more display names to their GitHub repo names
vinta Mar 18, 2026
6ad2a77
docs: rename Jupyter Notebook (IPython) to jupyter
vinta Mar 18, 2026
3d534f5
docs: lowercase H2O and PyMC display names
vinta Mar 18, 2026
5036fe8
docs: normalize entry names to lowercase for django.db.models and rep…
vinta Mar 18, 2026
7a0abca
docs: remove dataclasses and DottedDict from Data Structures
vinta Mar 18, 2026
8a131b7
docs: rename Spark ML to spark.ml in Machine Learning
vinta Mar 18, 2026
6204196
docs: add naming convention rule to CONTRIBUTING.md
vinta Mar 18, 2026
2cbb2d7
docs: normalize entry names to lowercase
vinta Mar 18, 2026
55db9c7
docs: rename Box to box, PathPicker to fpp
vinta Mar 18, 2026
e70b25d
docs: fix tkinter entry to use stdlib format
vinta Mar 18, 2026
9761bac
docs: lowercase 8 project names to match their import names
vinta Mar 18, 2026
46caf8c
docs: add AI and Agents category with autoresearch
vinta Mar 18, 2026
8b51866
chore: redistribute Specialized group across existing groups
vinta Mar 18, 2026
926ba01
chore: split AI & Data into AI & ML and Data & Science
vinta Mar 18, 2026
ac9b69a
fix: reduce table padding on mobile for better centering and arrow vi…
vinta Mar 18, 2026
fb2a693
fix: reduce number and arrow column widths on mobile for tighter tabl…
vinta Mar 18, 2026
ca350eb
fix: use table-layout fixed on mobile to prevent column width inflation
vinta Mar 18, 2026
e967722
fix: improve mobile table layout with auto sizing and tighter spacing
vinta Mar 18, 2026
4077051
docs: clarify VS Code Python extension entry name
vinta Mar 18, 2026
4ea3134
fix: move group tag into category cell and hide on mobile
vinta Mar 18, 2026
716464e
fix: improve CSS polish with active states, font smoothing, and text …
vinta Mar 18, 2026
7baa887
remove bcbio-nextgen
JinyangWang27 Mar 19, 2026
bac9514
Merge pull request #2979 from JinyangWang27/remove-bcbio-nextgen
JinyangWang27 Mar 19, 2026
c537661
docs: update Environment and Package Management entries
vinta Mar 20, 2026
18011f8
feat: merge duplicate entries across multiple categories
vinta Mar 20, 2026
c0fc30c
docs: add new entries and reorganize existing ones across multiple ca…
vinta Mar 20, 2026
dd33949
refactor: consolidate and reorganize categories for clarity
vinta Mar 20, 2026
0183bf1
refactor: move entries to more accurate categories
vinta Mar 20, 2026
1272d70
refactor: flatten subcategories and rename sections for clarity
vinta Mar 20, 2026
efc08da
docs: reorganize AI, Data Visualization, GUI, and Scientific Computin…
vinta Mar 20, 2026
fd9b266
docs: reorganize ToC into thematic groups and update contributing guide
vinta Mar 20, 2026
4322026
refactor: parse thematic groups from README bold markers instead of h…
vinta Mar 20, 2026
bec9818
refactor: reorganize thematic groups and reorder sections within groups
vinta Mar 20, 2026
d7ffd63
docs: fix stale cross-reference link in Web Frameworks section
vinta Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions .github/workflows/deploy-website.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Deploy Website

on:
push:
branches:
- master
schedule:
- cron: "0 0 * * *"

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true

- name: Install dependencies
run: uv sync --group build

- name: Restore star data cache
id: cache-stars
uses: actions/cache/restore@v4
with:
path: website/data/github_stars.json
key: github-stars-${{ github.run_id }}
restore-keys: github-stars-

- name: Fetch GitHub stars
id: fetch-stars
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: make fetch_github_stars

- name: Save star data cache
if: steps.fetch-stars.outcome == 'success'
uses: actions/cache/save@v4
with:
path: website/data/github_stars.json
key: github-stars-${{ github.run_id }}

- name: Verify star data exists
run: |
if [ ! -f website/data/github_stars.json ]; then
echo "::error::github_stars.json not found. No cache and fetch failed or was skipped."
exit 1
fi
echo "Star data found: $(wc -l < website/data/github_stars.json) lines"

- name: Build site
run: make build

- name: Upload artifact
uses: actions/upload-pages-artifact@v4
with:
path: website/output/

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: https://awesome-python.com/
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
15 changes: 11 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
# macOS
.DS_Store

# python
.venv/
*.py[co]

docs/index.md
site/
# website
website/output/
website/data/

# PyCharm IDE
.idea
# claude code
.claude/skills/
.superpowers/
.gstack/
skills-lock.json
43 changes: 25 additions & 18 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,5 @@
# Contributing

## 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:
Expand All @@ -31,15 +18,15 @@ 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
- 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
- Examples: fastapi, ruff, uv

### 3. Hidden Gem

Expand All @@ -52,10 +39,16 @@ Your submission must meet **ONE** of the following criteria:

## Entry Format Reference

**Use GitHub repository URLs** whenever possible. Projects linked to a GitHub repo are ranked higher on [awesome-python.com](https://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

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

### Standard Library Module
Expand Down Expand Up @@ -87,8 +80,9 @@ Your submission must meet **ONE** of the following criteria:
## 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
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

Expand All @@ -101,3 +95,16 @@ PRs are reviewed by automated tools and maintainers:
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
30 changes: 20 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
site_install:
pip install -r requirements.txt
-include .env
export

site_link:
ln -sf $(CURDIR)/README.md $(CURDIR)/docs/index.md
install:
uv sync

site_preview: site_link
mkdocs serve
fetch_github_stars:
uv run python website/fetch_github_stars.py

site_build: site_link
mkdocs build
test:
uv run pytest website/tests/ -v

site_deploy: site_link
mkdocs gh-deploy --clean
build:
uv run python website/build.py

preview: build
@echo "Check the website on http://localhost:8000"
uv run watchmedo shell-command \
--patterns='*.md;*.html;*.css;*.js;*.py' \
--recursive \
--wait --drop \
--command='uv run python website/build.py' \
README.md website/templates website/static website/data & \
python -m http.server -b 127.0.0.1 -d website/output/ 8000
Loading