Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions