diff --git a/minio/api.py b/minio/api.py index ec64422f9..f46e40f7b 100644 --- a/minio/api.py +++ b/minio/api.py @@ -34,7 +34,7 @@ from datetime import datetime, timedelta from io import BytesIO from random import random -from typing import IO, BinaryIO, Iterator, TextIO, Tuple, Union, cast +from typing import BinaryIO, Iterator, TextIO, Tuple, Union, cast from urllib.parse import urlunsplit from xml.etree import ElementTree as ET @@ -3020,7 +3020,7 @@ def upload_snowball_objects( info.mtime = int( time.to_float(obj.mod_time or time.utcnow()), ) - tar.addfile(info, cast(Union[IO[bytes], None], obj.data)) + tar.addfile(info, obj.data) if not name: length = cast(BytesIO, fileobj).tell() diff --git a/minio/commonconfig.py b/minio/commonconfig.py index 5f637aeb7..b9c774e27 100644 --- a/minio/commonconfig.py +++ b/minio/commonconfig.py @@ -21,7 +21,7 @@ from abc import ABCMeta from datetime import datetime -from typing import Type, TypeVar, cast +from typing import IO, Type, TypeVar, cast from xml.etree import ElementTree as ET from .error import MinioException @@ -533,7 +533,7 @@ def __init__( self, object_name: str, filename: str | None = None, - data: bytes | None = None, + data: IO[bytes] | None = None, length: int | None = None, mod_time: datetime | None = None, ): @@ -544,6 +544,8 @@ def __init__( self._length = length else: raise ValueError("only one of filename or data must be provided") + if data is not None and length is None: + raise ValueError("length must be provided for data") if mod_time is not None and not isinstance(mod_time, datetime): raise ValueError("mod_time must be datetime type") self._mod_time = mod_time @@ -559,7 +561,7 @@ def filename(self) -> str | None: return self._filename @property - def data(self) -> bytes | None: + def data(self) -> IO[bytes] | None: """Get data.""" return self._data