Files
Julian Risch 6c7348023b chore: enable ANN ruff ruleset for type annotation enforcement (#10856)
* chore: enable ANN ruff ruleset, exclude components and testing dirs

- Add ANN (flake8-annotations) to ruff select in pyproject.toml
- Globally ignore ANN401 (Any) for legitimate dynamic types
- Exclude haystack/components/** and haystack/testing/** from ANN checks
  (mirrors existing mypy disallow_incomplete_defs=false overrides)
- Fix all 43 ANN violations in the remaining modules:
  - Add -> None to __post_init__ in breakpoints, file_content,
    image_content, sparse_embedding, streaming_chunk, tool, toolset, auth
  - Add -> str to __str__ in filter_policy, auth, hf (2x)
  - Add *args: Any, **kwargs: Any + return types to metaclass __call__
    in component.py and document.py, and __new__ in chat_message.py
  - Add -> None to async _runner() in async_pipeline.py
  - Type _check_callable_compatibility args and return bool
  - Add Callable return type to _dispatch_bm25
  - Type send_telemetry decorator params and return
  - Type __init_track__ and __setattr_warn__ wrapper functions
  - Type _parse_date, _parse_generic_args, async run()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: fix ANN violations in .github/utils and docs-website scripts

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: fix mypy errors introduced by ANN annotations

- async_pipeline.py: _runner() returns Mapping[str, Any], not None
- dataclasses.py: extend type: ignore to cover arg-type in addition to call-arg

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* alphabetical order of ruff rules

* fix: add ANN type annotations to haystack/components and remove per-file-ignore

Fix all ANN (flake8-annotations) violations in haystack/components/ so
the per-file-ignore for that directory can be removed entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: remove haystack.components.* from mypy disallow_incomplete_defs override

All ANN type annotations have been added to haystack/components/, so the
mypy override is no longer needed for that module.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 11:28:33 +00:00
..
2025-10-10 12:04:48 +02:00