Release Notes:
This release adds comprehensive type annotations throughout the entire codebase and enables strict mypy type checking in CI. This improves code maintainability, IDE support, and catches potential bugs at development time rather than runtime.
The package now ships as a PEP 561 compliant typed package, meaning downstream users and IDE tooling can benefit from the type information.
There are no breaking changes in this release.
What's New
-
Full Type Annotations: All modules now have complete type hints, including function signatures, return types, and internal variables. This enables better IDE autocompletion, inline documentation, and static analysis.
-
Strict Mypy Checking in CI: Both the test and release workflows now include a dedicated type-checking job that runs
mypy --strictagainst the codebase. Releases will not proceed if type checking fails. -
PEP 561 Typed Package: Added the
py.typedmarker file, indicating that this package ships inline type information. Tools like mypy and pyright will now recognize and use these types when the package is installed as a dependency. -
Improved Sitemap Handling: Sitemap loading now consistently uses bytes throughout the parsing pipeline, fixing potential encoding edge cases and eliminating type ambiguity between text and binary data.
-
TypedDict for Job Tracking: Introduced a
PendingJobTypedDict to formally define the structure of pending job entries, improving code clarity and enabling better static analysis of the workflow logic.