(data: object, format_: PropertyFormat, format_template: str | None)
| 236 | |
| 237 | |
| 238 | def _format_data(data: object, format_: PropertyFormat, format_template: str | None) -> object: |
| 239 | if isinstance(data, (date, datetime)): |
| 240 | if format_ == "iso8601": |
| 241 | return data.isoformat() |
| 242 | |
| 243 | if format_ == "custom" and format_template is not None: |
| 244 | return data.strftime(format_template) |
| 245 | |
| 246 | if format_ == "base64" and is_base64_file_input(data): |
| 247 | binary: str | bytes | None = None |
| 248 | |
| 249 | if isinstance(data, pathlib.Path): |
| 250 | binary = data.read_bytes() |
| 251 | elif isinstance(data, io.IOBase): |
| 252 | binary = data.read() |
| 253 | |
| 254 | if isinstance(binary, str): # type: ignore[unreachable] |
| 255 | binary = binary.encode() |
| 256 | |
| 257 | if not isinstance(binary, bytes): |
| 258 | raise RuntimeError(f"Could not read bytes from {data}; Received {type(binary)}") |
| 259 | |
| 260 | return base64.b64encode(binary).decode("ascii") |
| 261 | |
| 262 | return data |
| 263 | |
| 264 | |
| 265 | def _transform_typeddict( |
no test coverage detected