Commit Graph

2010 Commits

Author SHA1 Message Date
Vinta Chen
bbe145cb36 ci: add workflow to fetch and commit GitHub stars daily
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>
2026-03-18 22:18:04 +08:00
Vinta Chen
d65c6ccd64 refactor: rename fetch_stats target and remove cache age gating
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>
2026-03-18 22:08:35 +08:00
Vinta Chen
b6d1bf9307 ci: use uv dependency groups and Makefile target for deploy workflow
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>
2026-03-18 21:33:57 +08:00
Vinta Chen
ab18c7e54c refactor: reformat build.py to Black style and add llms.txt output
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>
2026-03-18 21:33:51 +08:00
Vinta Chen
539edc4e20 Merge pull request #2971 from vinta/feature/markdown-it-py-parser
feat: replace regex README parser with markdown-it-py AST parser
2026-03-18 20:35:06 +08:00
Vinta Chen
280f250ce0 feat: migrate README parser to markdown-it-py and refresh website
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>
2026-03-18 20:33:36 +08:00
Vinta Chen
95b6b3cc69 feat: improve table accessibility and mobile expand tags
- Add sr-only headings for search/filter and results regions
- Add role=region and aria-label to .table-wrap for landmark navigation
- Add tabindex=0 and focus outline to .table-wrap for keyboard reachability
- Add sr-only text to empty Details column header
- Add role=button to expandable rows
- Add .expand-tags-mobile to show category/group tags in expand row on mobile
- Show .expand-tags-mobile via media query at <=900px breakpoint

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 18:49:52 +08:00
Vinta Chen
15a38caaf9 style: simplify footer layout and update links
Replace two-column footer (links left, attribution right) with a
single inline row of slash-separated items. Update attribution text
to 'Made by Vinta' with a link to vinta.ws, align footer links to
match standard anchor color/hover behavior.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 18:43:08 +08:00
Vinta Chen
25ec0c3937 feat: extract inline favicon to static SVG file
Replace the inline data-URI emoji favicon with a proper Python-logo SVG
served from /static/favicon.svg. Avoids repeated base64 encoding overhead
and allows the icon to be cached and updated independently.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 18:34:15 +08:00
Vinta Chen
95718991f8 build: add project metadata and restructure dependency groups
Add authors, readme, license, and project URLs to pyproject.toml.
Move build deps out of the default dependencies list into named groups
(build, lint, test, dev) so each tool group can be installed independently.
uv.lock updated to reflect the new group structure.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 18:34:11 +08:00
Vinta Chen
45391b84e9 build: simplify Makefile targets and add live-reload preview
Rename site_* targets to bare names (install, fetch_stats, build,
preview). Replace the static preview target with a watchmedo-driven
live-reload loop so file changes trigger automatic rebuilds. Make
the output directory creation idempotent (exist_ok=True) and static
copy incremental (dirs_exist_ok=True) so repeated builds don't wipe
output on each run.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 18:28:27 +08:00
Vinta Chen
74bba50785 build: restructure dependency groups and add watchdog
Split flat dev group into named groups (build, lint, test) so CI
and production installs can pull only what they need. Add watchdog
for the live-reload preview target.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 18:28:19 +08:00
Vinta Chen
266a6b6b6c simplify: remove redundant _has_description, unused param, merge loops
- Remove `_has_description` which duplicated `_extract_description` logic;
  use truthiness of the description string instead
- Remove unused `resources` parameter from `extract_entries`
- Merge two sequential loops in `parse_readme` into a single pass over
  children to find hr, Resources, and Contributing indices

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 17:41:13 +08:00
Vinta Chen
af3baab2ed refactor: consolidate load_cache into build.load_stars
load_cache was a duplicate of logic now living in build.load_stars.
Switch the call site to the shared helper and remove the redundant
local function and its tests.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:28:53 +08:00
Vinta Chen
143abbf201 build: remove markdown dependency, replaced by markdown-it-py
The markdown package is no longer used after switching the README parser
to markdown-it-py in the feature branch.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:28:50 +08:00
Vinta Chen
0f374970dd refactor: extract parsing logic from build.py into readme_parser module
slugify, parse_readme, count_entries, extract_preview, render_content_html,
and related helpers are moved to a dedicated readme_parser module.
build.py now imports from readme_parser rather than defining these inline.
Tests for the removed functions are dropped from test_build.py since they
now live with the module they test.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:27:14 +08:00
Vinta Chen
03ac212880 test: add integration tests against the real README.md
Adds TestParseRealReadme covering category count, slug generation,
descriptions, entry counts, previews, content HTML, subcategory
rendering, also-see links, and description link stripping.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:25:12 +08:00
Vinta Chen
a83809886c feat: implement HTML rendering for readme sections
Replace the _render_section_html stub with a working implementation that
converts parsed bullet-list nodes into classed div elements (entry,
entry-sub, subcat). Add _render_bullet_list_html to handle nested
structure and XSS escaping. Cover all cases with a new
TestRenderSectionHtml suite.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:24:24 +08:00
Vinta Chen
3d015bc630 feat(parser): implement entry extraction from bullet list AST nodes
Replace _parse_section_entries stub with full implementation that walks
bullet_list AST nodes to extract ParsedEntry records, including support
for subcategory labels (text-only list items) and also_see nested links.

Add _parse_list_entries, helper finders (_find_inline, _find_first_link,
_find_child), and _extract_description_html with separator stripping.

Extend test suite with TestParseSectionEntries covering flat entries,
link-only entries, subcategorized entries, also_see, entry_count, preview
first-four, and XSS escaping in description HTML.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:23:11 +08:00
Vinta Chen
1c67c9f0e6 feat: replace regex README parser with markdown-it-py AST parser
Introduce parse_readme() which uses MarkdownIt to build a full AST
instead of line-by-line regex matching. The function splits the document
at the thematic break, groups nodes by h2 heading, extracts category
descriptions from leading italic paragraphs, and separates the
Categories, Resources, and Contributing sections cleanly.

Add markdown-it-py==4.0.0 (+ mdurl) as a runtime dependency to support
the new parser.

Tests cover section counts, names, slugs, descriptions, content
presence, boundary conditions (no separator, no description), and mixed
description markup.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:21:49 +08:00
Vinta Chen
5fa7c7d1a6 feat(website): add markdown-it-py README parser and inline renderer tests
Introduce readme_parser.py which parses README.md into structured
section data using the markdown-it-py AST. Includes TypedDicts for
ParsedEntry/ParsedSection, slugify(), render_inline_html(), and
render_inline_text(). Add test_readme_parser.py covering HTML escaping,
link rendering, emphasis, strong, and code_inline for both renderers.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 17:20:23 +08:00
Vinta Chen
c5caa5a5e1 ci: hardcode deployment URL to https://awesome-python.com
The deploy-pages action outputs http:// despite HTTPS being enforced.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-18 14:03:50 +08:00
Vinta Chen
a732751923 Merge pull request #2969 from vinta/feature/relaunch-website
Relaunch website with custom build system
2026-03-18 13:59:01 +08:00
Vinta Chen
7eb9b11a67 data: remove zipline entry from github_stars.json
Follows the removal of zipline from README.md (see bd73b1f).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:57:36 +08:00
Vinta Chen
87a16f47ea build: load .env in Makefile and rename fetch_stars to site_fetch_stats
Adds -include .env with export so environment variables (e.g. GitHub
token) are available to uv commands without manual export. Renames the
target to match the site_ prefix convention used by the other targets.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:57:32 +08:00
Vinta Chen
2fe0f5c2bd ci: bump actions/checkout to v6 and upload-pages-artifact to v4
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:57:26 +08:00
Vinta Chen
cd7b8f6bb0 update README description and remove Resources section
- Add 'tools' to the description tagline
- Remove the Resources TOC entry (Newsletters, Podcasts) and corresponding
  section — content is no longer relevant to the relaunched site
- Remove uv from the Environment Management section (it's now a dev dependency
  managed by pyproject.toml, not a curated list entry)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:48:53 +08:00
Vinta Chen
177183d9bd add custom website build system
Replaces MkDocs with a bespoke Python site generator using Jinja2 templates
and Markdown. Adds uv for dependency management, GitHub Actions workflow for
deployment, and Makefile targets for local development (fetch_stars, build,
preview, deploy).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:48:49 +08:00
Vinta Chen
4af84dac8e remove mkdocs site infrastructure
Replace the MkDocs-based build (mkdocs.yml, requirements.txt, docs/CNAME,
docs/css/extra.css) with a custom website builder as part of the site relaunch.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-18 13:48:45 +08:00
Jinyang
1f7757f62b Merge pull request #2968 from JinyangWang27/remove-zipline
remove zipline
2026-03-18 08:35:03 +04:00
Jinyang
bd73b1faf0 remove zipline
No longer maintained and out-dated.
2026-03-18 07:57:37 +04:00
Vinta Chen
a8eac91658 add sponsorship 2026-03-17 19:23:40 +08:00
Jinyang
5ef25f1f38 Merge pull request #2950 from hiSandog/add-agno
Add Agno to Machine Learning section
2026-03-17 07:38:30 +04:00
Jinyang
742c99aa3c fix entry order 2026-03-17 07:37:53 +04:00
Jinyang
8b9dc48096 Merge pull request #2962 from Ashi-tha/add-pgmpy-library 2026-03-16 06:21:15 +04:00
AshithaT
9eb21b268e Add pgmpy library to Machine Learning section 2026-03-15 22:58:19 +05:30
Jinyang
0c9df33da2 Merge pull request #2961 from zainsardar-tech/master 2026-03-15 08:04:01 +04:00
Muhammad Zain ul abidin
bdeb5b90e8 Fix duplicate entry for feedparser in README
Fixed Alphabetic Order
2026-03-13 11:03:59 +05:00
Muhammad Zain ul abidin
c07522717f Add crawl4ai to web scraping libraries list
Crawl4AI correct url
2026-03-13 11:00:23 +05:00
Jinyang
6c1fa49291 Merge pull request #2955 from LincolnBurrows2017/fix-nose2-backtick
Fix missing closing backtick in nose2 description
2026-03-11 07:55:01 +01:00
OpenClaw
9101ad17bb Fix missing closing backtick in nose2 description
The description 'based on unittest2.' was missing the closing backtick, causing incorrect Markdown rendering.
2026-03-10 23:13:39 +00:00
陈家名
61d69eeff8 Add Agno to Machine Learning section 2026-03-08 21:12:05 +08:00
Vinta Chen
d71e38771c Remove Warp sponsorship banner from README
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 01:16:33 +08:00
Vinta Chen
852202a1a4 Remove Claude PR review GitHub Actions workflow
Co-Authored-By: Claude <noreply@anthropic.com>
2026-03-05 01:16:30 +08:00
Jinyang
625f698c47 Merge pull request #2941 from CarlosAlbertoFurtado/add-instructor
Add Instructor
2026-03-04 10:48:15 +01:00
Vinta Chen
89eb268536 Merge pull request #2940 from Rohan5commit/fix-pathlib-grammar
docs: fix grammar in pathlib description
2026-03-04 15:43:32 +08:00
CarlosAlbertoFurtado
68544e2892 Add Instructor to Machine Learning section 2026-03-03 07:49:13 -03:00
rohan436
5888b93f7e docs: fix grammar in pathlib description 2026-03-03 16:56:40 +08:00
Jinyang
33a89c7eaf Merge pull request #2918 from yfedoseev/add-pdf-oxide
Add pdf_oxide to PDF section
2026-03-02 06:14:00 +01:00
Jinyang
d7edf9e86a Merge pull request #2938 from vitali87/add-code-graph-rag
feat: add code-graph-rag to Code Analysis section
2026-03-02 06:10:08 +01:00