Bring the library up to date after a long gap:
Packaging
- Migrate pyproject.toml to PEP 621 [project] metadata with the
poetry.core.masonry.api build backend and PEP 735 dependency groups.
- Drop end-of-life Python 3.7; minimum is now Python 3.8. Add classifiers
for 3.8 through 3.13.
- Ship type hints plus a py.typed marker (PEP 561).
Client code
- Add a configurable request timeout (default 60s) so network calls no
longer hang indefinitely.
- Remove Python 2 compatibility shims, use isinstance checks and f-strings,
import requests at module load, and add type annotations.
- Derive the User-Agent version from installed package metadata.
CI and tooling
- Replace Travis with a GitHub Actions matrix (Python 3.8-3.13).
- Replace autopep8 with ruff for linting and formatting.
- Make the live-service test opt-in via QUICKCHART_NETWORK_TESTS so the
default suite is deterministic and offline-friendly.
Docs
- Update README badges, version notes, timeout docs, and add a Development
section. Add CHANGELOG.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LDLZoKFv4Y4Q6rFYMn4MoL
This PR modernizes the quickchart-python codebase with comprehensive type hints, updated tooling, and improved code quality standards.
Summary
The codebase has been updated to use modern Python practices including inline type hints (PEP 561), ruff for linting and formatting, and a modernized project configuration. Support for Python 3.7 has been dropped in favor of Python 3.8+.
Key Changes
Type Hints & Code Quality:
Configuration & Packaging:
Tooling & CI/CD:
Features:
Testing:
Documentation:
Code Formatting:
Notable Implementation Details
https://claude.ai/code/session_01LDLZoKFv4Y4Q6rFYMn4MoL