Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
e11afd1
feat(website): generate static category pages
vinta May 2, 2026
c98cbe2
style(website): clarify category section heading
vinta May 2, 2026
b00395a
add missing links of category descriptions
vinta May 2, 2026
7fadbaf
feat(website): add homepage category directory
vinta May 2, 2026
4005c2e
feat(website): add slug and url to subcategory entries
vinta May 2, 2026
39d4b3d
feat(website): add subcategory_path and subcategory_public_url helpers
vinta May 2, 2026
a46b57e
fix(readme): rename group "Miscellaneous" to "Other"
vinta May 2, 2026
583d5e7
feat(website): assert unique slugs across categories and groups
vinta May 2, 2026
cee1e65
test(website): hoist pytest import to module level
vinta May 2, 2026
532d93d
feat(website): generate static pages for groups under /categories/
vinta May 2, 2026
eeecacc
feat(website): generate static pages for subcategories
vinta May 2, 2026
6bc9d83
refactor(website): match subcategory by URL prefix instead of name split
vinta May 2, 2026
0370223
feat(website): show parent category breadcrumb on subcategory pages
vinta May 2, 2026
20df47e
style(website): add CSS for category-breadcrumb and assert absence on…
vinta May 2, 2026
fe7fd35
feat(website): include group and subcategory URLs in sitemap
vinta May 2, 2026
e320ba7
test(website): restore exact sitemap URL list and lastmod count check
vinta May 2, 2026
e0e7fc9
feat(website): embed filter-to-url map in index for client routing
vinta May 2, 2026
7043322
fix(website): escape </script> in embedded filter URLs JSON
vinta May 2, 2026
04a04a1
feat(website): add data-url to tag buttons for client-side routing
vinta May 2, 2026
b0136ac
feat(website): switch index filter URLs from querystring to path
vinta May 2, 2026
8e00055
fix(website): remove duplicate tag on group/category pages
vinta May 2, 2026
8e72e8a
feat(website): strip #library-index from URL after All projects click
vinta May 2, 2026
1139402
fix(website): stop category-page heading from wrapping
vinta May 3, 2026
03db91b
style(website): left-align results note on category pages
vinta May 3, 2026
0336942
feat(website): move descriptions into expand row on category pages
vinta May 3, 2026
d64b47b
feat(website): mirror index layout on category pages
vinta May 3, 2026
70a8255
feat(website): add /categories/built-in/ page for Built-in tag filter
vinta May 3, 2026
b82a254
fix(website): clear filter lands at /#library-index on category pages
vinta May 3, 2026
6478111
feat(website): add Browse by category nav to group page hero
vinta May 3, 2026
c68b985
feat(website): add /sponsorship/ landing page
vinta May 3, 2026
40913c3
fix double quotes
vinta May 3, 2026
8a32d27
fix(website): tighten sponsorship page copy for clarity
vinta May 3, 2026
ee01a0b
refactor(website): extract render_category, replace slugify filter wi…
vinta May 3, 2026
38b54ca
fix(website): trim sponsorship page nav and hero stats
vinta May 3, 2026
a068219
fix(website): type build template entries
vinta May 3, 2026
d3f35a9
test(website): remove redundant and brittle tests
vinta May 3, 2026
432a1f4
build: add lint, format, typecheck make targets and ty dependency
vinta May 3, 2026
3d99f73
style(website): apply ruff format
vinta May 3, 2026
0c20fee
build: add ty config and reorder tool sections in pyproject.toml
vinta May 3, 2026
d7a9168
Merge pull request #3106 from vinta/feature/better-seo-2
vinta May 3, 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
File renamed without changes.
9 changes: 9 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ fetch_github_stars:
test:
uv run pytest website/tests/ -v

lint:
uv run ruff check .

format:
uv run ruff format .

typecheck:
uv run ty check website

build:
uv run python website/build.py

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ An opinionated guide to the best Python frameworks, libraries, tools, and resour
- [Penetration Testing](#penetration-testing)
- [Web Security](#web-security)

**Miscellaneous**
**Other**

- [Hardware](#hardware)
- [Microsoft Windows](#microsoft-windows)
Expand Down Expand Up @@ -1098,7 +1098,7 @@ _Libraries for application-layer web security._

- [secure](https://github.com/TypeError/secure) - HTTP security headers for Python web applications with ASGI and WSGI middleware.

**Miscellaneous**
**Other**

## Hardware

Expand Down
2 changes: 1 addition & 1 deletion SPONSORSHIP.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Your sponsorship puts your product in front of developers at the exact moment th

## Get Started

Email [vinta.chen@gmail.com](mailto:vinta.chen@gmail.com?subject=awesome-python%20Sponsorship) with:
Email [vinta.chen@gmail.com](mailto:vinta.chen@gmail.com?subject=Awesome%20Python%20Sponsorship) with:

- **Tier:** Headline Sponsor ($500/mo) or Featured Sponsor ($150/mo)
- **Content:** Product name, URL, logo, and description (Headline tier) or `[Name](URL) - Description.` entry (Featured tier)
Expand Down
30 changes: 22 additions & 8 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Repository = "https://github.com/vinta/awesome-python"

[dependency-groups]
build = ["httpx==0.28.1", "jinja2==3.1.6", "markdown-it-py==4.0.0"]
lint = ["ruff==0.15.6"]
lint = ["ruff==0.15.6", "ty==0.0.33"]
test = ["pytest==9.0.3"]
dev = [
{ include-group = "build" },
Expand All @@ -23,16 +23,30 @@ dev = [
"watchdog==6.0.0",
]

[tool.pytest.ini_options]
testpaths = ["website/tests"]
pythonpath = ["website"]

[tool.ruff]
line-length = 200

[tool.uv]
exclude-newer = "3 days"
no-build = true

[tool.uv.pip]
only-binary = [":all:"]

[tool.ruff]
line-length = 200

[tool.ty.environment]
python-version = "3.13"
root = ["website"]

[tool.ty.terminal]
error-on-warning = true

[tool.ty.rules]
division-by-zero = "error"
possibly-missing-attribute = "error"
possibly-missing-import = "error"
possibly-unresolved-reference = "error"
unused-ignore-comment = "error"

[tool.pytest.ini_options]
testpaths = ["website/tests"]
pythonpath = ["website"]
34 changes: 32 additions & 2 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading