Base64 media bytes plus the metadata needed by provider payloads. Attributes: base64_data: Raw base64 payload without a ``data:`` URI prefix. mime_type: MIME type to send with provider payloads. format: Optional normalized media format, such as ``wav`` for audio.
| 107 | |
| 108 | @dataclass(slots=True) |
| 109 | class ResolvedMediaData: |
| 110 | """Base64 media bytes plus the metadata needed by provider payloads. |
| 111 | |
| 112 | Attributes: |
| 113 | base64_data: Raw base64 payload without a ``data:`` URI prefix. |
| 114 | mime_type: MIME type to send with provider payloads. |
| 115 | format: Optional normalized media format, such as ``wav`` for audio. |
| 116 | """ |
| 117 | |
| 118 | base64_data: str |
| 119 | mime_type: str |
| 120 | format: str | None = None |
| 121 | |
| 122 | def to_bytes(self) -> bytes: |
| 123 | """Decode the base64 payload, accepting missing padding.""" |
| 124 | return _decode_base64_payload( |
| 125 | self.base64_data, |
| 126 | error_message="invalid resolved media base64 data", |
| 127 | ) |
| 128 | |
| 129 | def to_data_url(self) -> str: |
| 130 | """Return a ``data:<mime>;base64,...`` URL for multimodal providers.""" |
| 131 | return f"data:{self.mime_type};base64,{self.base64_data}" |
| 132 | |
| 133 | |
| 134 | @dataclass(slots=True) |
no outgoing calls