99from enum import Enum
1010from io import IOBase
1111from os import makedirs , path
12- from typing import Any , Callable , Iterable , List , MutableMapping , Optional , Set , Tuple
12+ from typing import Any , Callable , Iterable , List , MutableMapping , Optional , Set , Tuple , Type
1313
1414from airbyte_protocol_dataclasses .models import FailureType
1515from wcmatch .glob import GLOBSTAR , globmatch
@@ -43,10 +43,9 @@ class AbstractFileBasedStreamReader(ABC):
4343
4444 def __init__ (self ) -> None :
4545 self ._config = None
46-
4746 if (
4847 self .file_transfer_reader_class is None
49- and self .upload . __func__ == AbstractFileBasedStreamReader .upload
48+ and type ( self ) .upload is AbstractFileBasedStreamReader .upload
5049 ):
5150 raise NotImplementedError (
5251 "One of file_transfer_reader_class or upload method must be defined to support file transfer."
@@ -127,16 +126,6 @@ def filter_files_by_globs_and_start_date(
127126 seen .add (file .uri )
128127 yield file
129128
130- @abstractmethod
131- def file_size (self , file : RemoteFile ) -> int :
132- """Utility method to get size of the remote file.
133-
134- This is required for connectors that will support writing to
135- files. If the connector does not support writing files, then the
136- subclass can simply `return 0`.
137- """
138- ...
139-
140129 @staticmethod
141130 def file_matches_globs (file : RemoteFile , globs : List [str ]) -> bool :
142131 # Use the GLOBSTAR flag to enable recursive ** matching
@@ -168,7 +157,7 @@ def include_identities_stream(self) -> bool:
168157 return False
169158
170159 @property
171- def file_transfer_reader_class (self ) -> AbstractFileBasedFileTransferReader | None :
160+ def file_transfer_reader_class (self ) -> Type [ AbstractFileBasedFileTransferReader ] | None :
172161 return None
173162
174163 def upload (
@@ -190,14 +179,16 @@ def upload(
190179 - file_size_bytes (int): The size of the referenced file in bytes.
191180 - source_file_relative_path (str): The relative path to the referenced file in source.
192181 """
193- # if self.file_transfer_reader_class is None and self.upload.__func__ == AbstractFileBasedStreamReader.upload:
194- # raise NotImplementedError("One of file_transfer_reader_class or upload method must be defined to support file transfer.")
182+ if self .file_transfer_reader_class is None :
183+ raise NotImplementedError (
184+ "file_transfer_reader_class must be defined to support default file transfer upload method."
185+ )
195186
196187 file_transfer = self .file_transfer_reader_class (file )
197188 file_size = file_transfer .file_size
198189
199190 if file_size > file_transfer .FILE_SIZE_LIMIT :
200- message = "File size exceeds the 1 GB limit."
191+ message = "File size exceeds the 1.5 GB limit."
201192 raise FileSizeLimitError (
202193 message = message , internal_message = message , failure_type = FailureType .config_error
203194 )
0 commit comments