The private helper duplicated _find_child with a hardcoded type filter.
Remove it and call the general helper directly at both call sites.
Co-Authored-By: Claude <noreply@anthropic.com>
Extracts a _href(link) helper that returns link.attrGet('href') narrowed
to str (falling back to '') instead of the raw str|int|float|None union.
Replaces all four attrGet('href') or '' call sites with _href(), fixing
ty errors where the widened union leaked into TypedDict url fields.
Co-Authored-By: Claude <noreply@anthropic.com>
Cache-write shape mismatches the TypedDict and callers mix .get() and
direct access, so the stricter type was providing false safety. Using
dict[str, dict] accurately reflects the actual runtime contract.
Co-Authored-By: Claude <noreply@anthropic.com>
Replace loose list[dict] annotations with concrete TypedDicts imported
from readme_parser so ty can verify call-site compatibility.
Co-Authored-By: Claude <noreply@anthropic.com>
client is the only non-first param and is always required, so the * separator
adds no clarity. Update the call site accordingly.
Co-Authored-By: Claude <noreply@anthropic.com>
Python 3.11 introduced datetime.UTC as a cleaner alias for
datetime.timezone.utc. Both build.py and fetch_github_stars.py
are updated to use the shorter form.
Co-Authored-By: Claude <noreply@anthropic.com>
State reset (current_group_name = None, current_group_cats = []) was
duplicated in both branches of the early-return guard. Move it after
the conditional so it runs exactly once regardless of path.
Co-Authored-By: Claude <noreply@anthropic.com>
Parse the # Sponsors heading in README.md into structured data and
render a dedicated sponsor band above the library index on the site.
Co-Authored-By: Claude <noreply@anthropic.com>
- Link awesome-python.com in sponsor descriptions
- Add 120-character limit for sponsor descriptions
- Reword Link Sponsor tier to clarify entry format
- Replace month-to-month wording with flexible term details
- Add payment methods (ACH/wire, PayPal)
- Add editorial reserve clause for sponsor content
Co-Authored-By: Claude <noreply@anthropic.com>
Lumibot is an actively maintained Python framework (1,333+ stars, MIT
license) for algorithmic trading backtesting and live deployment. It
supports stocks, options, crypto, futures, and forex across multiple
brokers. Repository is 3+ years old with consistent weekly activity.
Category: Hidden Gem — solves the real pain of running the same
strategy code in backtesting and production with multiple brokers.
https://github.com/Lumiwealth/lumibot
- Reword referrer list label and reorder entries
- Rename 'Past Sponsors' to 'Previously Sponsored By'
- Trim redundant word from closing sentence
Co-Authored-By: Claude <noreply@anthropic.com>