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.
@@ -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
- self._most_recently_seen_exception = RuntimeError(f"Failed reading with error: {optional_exception}")
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
- raise RuntimeError(f"No sync mode was found for {stream.name}.")
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(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 0.60.1
3
+ Version: 0.61.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://github.com/airbytehq/airbyte
6
6
  Author: Airbyte
@@ -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=zqoTlwOX8kaKS3HFKRl7aFQqJdC9U_ys2BsMyD6tp8c,4440
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=PWF1Zu7RluOapcHmE-Z-XQI_Fr7eYxeaRqnvWTsmHt0,11315
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=dXdoddombIS1JZHKJWTlRWzO_2schjus7b86d4xcCx8,8811
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.60.1.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
453
- airbyte_cdk-0.60.1.dist-info/METADATA,sha256=7QxkzZVReEfj1SSP7M66H0k4R2eEkstjQLJg8dDATUI,11073
454
- airbyte_cdk-0.60.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
455
- airbyte_cdk-0.60.1.dist-info/top_level.txt,sha256=edvsDKTnE6sD2wfCUaeTfKf5gQIL6CPVMwVL2sWZzqo,51
456
- airbyte_cdk-0.60.1.dist-info/RECORD,,
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,,