Skip to content

refactor: make _parse_content a pure parser, add Chunk type param to ModalityClient #202

@Kamilbenkirane

Description

@Kamilbenkirane

Summary

_parse_content accepted **parameters: Unpack[...] across all 28 modality clients, but 27 of 28 never used them. This was a leftover from before affd85a which moved parameter-dependent output transformations to _transform_output. After that refactor, _parse_content should be a pure parser: (self, response_data) -> Content.

Additionally, ModalityClient had 4 generic parameters (In, Out, Params, Content) but its _stream_class method returned type[Stream[Out, Params, Chunk]] where Chunk was a bare class import, not a bound type parameter. mypy saw this as Chunk[Any], making all overrides technically invalid due to generic invariance. Fix: add Chunk as a 5th type parameter.

Changes

  • Remove **parameters from base ModalityClient._parse_content abstract method and _predict call site
  • Remove **parameters from all 28 modality-level _parse_content overrides
  • Move parameter-dependent logic to _transform_output overrides (4 audio providers + Google Imagen)
  • Add Chunk as 5th type parameter to ModalityClient
  • Update 5 modality base clients, 8 root provider docstrings, 2 scaffold templates, 1 test

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions