airbyte-cdk 0.60.1__py3-none-any.whl → 0.61.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- airbyte_cdk/sources/concurrent_source/thread_pool_manager.py +5 -1
- airbyte_cdk/sources/file_based/file_based_source.py +1 -1
- airbyte_cdk/sources/streams/concurrent/cursor.py +11 -1
- {airbyte_cdk-0.60.1.dist-info → airbyte_cdk-0.61.0.dist-info}/METADATA +1 -1
- {airbyte_cdk-0.60.1.dist-info → airbyte_cdk-0.61.0.dist-info}/RECORD +8 -8
- {airbyte_cdk-0.60.1.dist-info → airbyte_cdk-0.61.0.dist-info}/LICENSE.txt +0 -0
- {airbyte_cdk-0.60.1.dist-info → airbyte_cdk-0.61.0.dist-info}/WHEEL +0 -0
- {airbyte_cdk-0.60.1.dist-info → airbyte_cdk-0.61.0.dist-info}/top_level.txt +0 -0
@@ -64,7 +64,11 @@ class ThreadPoolManager:
|
|
64
64
|
if optional_exception:
|
65
65
|
# Exception handling should be done in the main thread. Hence, we only store the exception and expect the main
|
66
66
|
# thread to call raise_if_exception
|
67
|
-
|
67
|
+
# We do not expect this error to happen. The futures created during concurrent syncs should catch the exception and
|
68
|
+
# push it to the queue. If this exception occurs, please review the futures and how they handle exceptions.
|
69
|
+
self._most_recently_seen_exception = RuntimeError(
|
70
|
+
f"Failed processing a future: {optional_exception}. Please contact the Airbyte team."
|
71
|
+
)
|
68
72
|
futures.pop(index)
|
69
73
|
|
70
74
|
def shutdown(self) -> None:
|
@@ -182,7 +182,7 @@ class FileBasedSource(ConcurrentSourceAdapter, ABC):
|
|
182
182
|
for catalog_stream in self.catalog.streams:
|
183
183
|
if stream.name == catalog_stream.stream.name:
|
184
184
|
return catalog_stream.sync_mode
|
185
|
-
|
185
|
+
self.logger.warning(f"No sync mode was found for {stream.name}.")
|
186
186
|
return None
|
187
187
|
|
188
188
|
def read(
|
@@ -153,9 +153,19 @@ class ConcurrentCursor(Cursor):
|
|
153
153
|
)
|
154
154
|
elif self._most_recent_record:
|
155
155
|
if self._has_closed_at_least_one_slice:
|
156
|
+
# If we track state value using records cursor field, we can only do that if there is one partition. This is because we save
|
157
|
+
# the state every time we close a partition. We assume that if there are multiple slices, they need to be providing
|
158
|
+
# boundaries. There are cases where partitions could not have boundaries:
|
159
|
+
# * The cursor should be per-partition
|
160
|
+
# * The stream state is actually the parent stream state
|
161
|
+
# There might be other cases not listed above. Those are not supported today hence the stream should not use this cursor for
|
162
|
+
# state management. For the specific user that was affected with this issue, we need to:
|
163
|
+
# * Fix state tracking (which is currently broken)
|
164
|
+
# * Make the new version available
|
165
|
+
# * (Probably) ask the user to reset the stream to avoid data loss
|
156
166
|
raise ValueError(
|
157
167
|
"Given that slice_boundary_fields is not defined and that per-partition state is not supported, only one slice is "
|
158
|
-
"expected."
|
168
|
+
"expected. Please contact the Airbyte team."
|
159
169
|
)
|
160
170
|
|
161
171
|
self.state["slices"].append(
|
@@ -35,7 +35,7 @@ airbyte_cdk/sources/concurrent_source/concurrent_read_processor.py,sha256=rU1xho
|
|
35
35
|
airbyte_cdk/sources/concurrent_source/concurrent_source.py,sha256=prTBbXcdzwF4-xou23EY-YhUKmQJc7czakYZzGWjDko,8828
|
36
36
|
airbyte_cdk/sources/concurrent_source/concurrent_source_adapter.py,sha256=51024BYRa3WT9duiP7CJ2dJjEwMRhMyRnwj2MRNdfuA,3260
|
37
37
|
airbyte_cdk/sources/concurrent_source/partition_generation_completed_sentinel.py,sha256=z1t-rAZBsqVidv2fpUlPHE9JgyXsITuGk4AMu96mXSQ,696
|
38
|
-
airbyte_cdk/sources/concurrent_source/thread_pool_manager.py,sha256=
|
38
|
+
airbyte_cdk/sources/concurrent_source/thread_pool_manager.py,sha256=hFj5rsRtORurl3fwH8GC9h6Uz2wbzBFOLWUxJ-YJ7J8,4801
|
39
39
|
airbyte_cdk/sources/declarative/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
|
40
40
|
airbyte_cdk/sources/declarative/create_partial.py,sha256=sUJOwD8hBzW4pxw2XhYlSTMgl-WMc5WpP5Oq_jo3fHw,3371
|
41
41
|
airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=4KtVA54eDmZt8JAFuHLwQv8PmhOmiiaGRBNUgcAQBzQ,87107
|
@@ -153,7 +153,7 @@ airbyte_cdk/sources/embedded/runner.py,sha256=kZ0CcUANuMjdZ4fmvp_w9P2IcsS9WSHxNq
|
|
153
153
|
airbyte_cdk/sources/embedded/tools.py,sha256=-Z4tZ4AP1OTi_zrqFM3YV8Rt7c60wvsrv0Dc-rTZ2uw,744
|
154
154
|
airbyte_cdk/sources/file_based/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
155
155
|
airbyte_cdk/sources/file_based/exceptions.py,sha256=-SjdDk-mbkp5qQVUESkn788W8NmGtC2LROkZRKS_Dxc,5613
|
156
|
-
airbyte_cdk/sources/file_based/file_based_source.py,sha256=
|
156
|
+
airbyte_cdk/sources/file_based/file_based_source.py,sha256=Hs9q27db2x5wnvmo7uN8NVM0EGp-7KK_R4IjR2ig3tU,11316
|
157
157
|
airbyte_cdk/sources/file_based/file_based_stream_reader.py,sha256=K9fFHcSL4E8v-X2l38wRAcZCjpyifr35orvby8vQt84,3749
|
158
158
|
airbyte_cdk/sources/file_based/remote_file.py,sha256=dtRX7X06Fug-XDz93a5lkwPQy5nQgxH0-ZcXW2HuMGI,312
|
159
159
|
airbyte_cdk/sources/file_based/schema_helpers.py,sha256=XBkOutIw_n6SNYU34qbyTbl0Ppt0i4k3sVFMSaX3wJo,9103
|
@@ -205,7 +205,7 @@ airbyte_cdk/sources/streams/concurrent/abstract_stream.py,sha256=HlnmAh-LcQbs9g1
|
|
205
205
|
airbyte_cdk/sources/streams/concurrent/abstract_stream_facade.py,sha256=QTry1QCBUwJDw1QSCEvz23s7zIEx_7QMxkPq9j-oPIQ,1358
|
206
206
|
airbyte_cdk/sources/streams/concurrent/adapters.py,sha256=FokiPnhjn3IQpRyQ6rr0ABJKYU0Sd1kNulWlQV_nuX8,16781
|
207
207
|
airbyte_cdk/sources/streams/concurrent/availability_strategy.py,sha256=8xDRpfktnARBbRi_RwznvKuoGrpPF2b6tQyloMwogkM,2013
|
208
|
-
airbyte_cdk/sources/streams/concurrent/cursor.py,sha256=
|
208
|
+
airbyte_cdk/sources/streams/concurrent/cursor.py,sha256=6Z-PQWp1Jszryao4nSvHEUyKxX3Uur4Jk1MTsQ9AxQY,9782
|
209
209
|
airbyte_cdk/sources/streams/concurrent/default_stream.py,sha256=qPhMaLxGdR29kyMeA-YrHg-XePgPNDjactQPKbp56RA,3009
|
210
210
|
airbyte_cdk/sources/streams/concurrent/exceptions.py,sha256=-WETGIY5_QFmVeDFiqm4WhRJ_nNCkfcDwOQqx6cSqrI,365
|
211
211
|
airbyte_cdk/sources/streams/concurrent/helpers.py,sha256=FPdGovWg0_hPxoTCAJnqs2SEqEq32pRGKlvPMP7hGWo,1290
|
@@ -449,8 +449,8 @@ unit_tests/utils/test_schema_inferrer.py,sha256=Z2jHBZ540wnYkylIdV_2xr75Vtwlxuyg
|
|
449
449
|
unit_tests/utils/test_secret_utils.py,sha256=XKe0f1RHYii8iwE6ATmBr5JGDI1pzzrnZUGdUSMJQP4,4886
|
450
450
|
unit_tests/utils/test_stream_status_utils.py,sha256=Xr8MZ2HWgTVIyMbywDvuYkRaUF4RZLQOT8-JjvcfR24,2970
|
451
451
|
unit_tests/utils/test_traced_exception.py,sha256=bDFP5zMBizFenz6V2WvEZTRCKGB5ijh3DBezjbfoYIs,4198
|
452
|
-
airbyte_cdk-0.
|
453
|
-
airbyte_cdk-0.
|
454
|
-
airbyte_cdk-0.
|
455
|
-
airbyte_cdk-0.
|
456
|
-
airbyte_cdk-0.
|
452
|
+
airbyte_cdk-0.61.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
|
453
|
+
airbyte_cdk-0.61.0.dist-info/METADATA,sha256=r_LmEtsi7KUJ7VTh1dzH6lRlxgS443clN5_oRcwlegw,11073
|
454
|
+
airbyte_cdk-0.61.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
455
|
+
airbyte_cdk-0.61.0.dist-info/top_level.txt,sha256=edvsDKTnE6sD2wfCUaeTfKf5gQIL6CPVMwVL2sWZzqo,51
|
456
|
+
airbyte_cdk-0.61.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|