airbyte-cdk 6.51.0.post8.dev15492684389__py3-none-any.whl → 6.51.0.post9.dev15582628322__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.
@@ -27,7 +27,6 @@ from airbyte_cdk.sources.streams.concurrent.state_converters.abstract_stream_sta
27
27
  AbstractStreamStateConverter,
28
28
  )
29
29
  from airbyte_cdk.sources.types import Record, StreamSlice, StreamState
30
- import gc
31
30
 
32
31
  logger = logging.getLogger("airbyte")
33
32
 
@@ -60,8 +59,8 @@ class ConcurrentPerPartitionCursor(Cursor):
60
59
  CurrentPerPartitionCursor expects the state of the ConcurrentCursor to follow the format {cursor_field: cursor_value}.
61
60
  """
62
61
 
63
- DEFAULT_MAX_PARTITIONS_NUMBER = 250
64
- SWITCH_TO_GLOBAL_LIMIT = 100
62
+ DEFAULT_MAX_PARTITIONS_NUMBER = 25_000
63
+ SWITCH_TO_GLOBAL_LIMIT = 10_000
65
64
  _NO_STATE: Mapping[str, Any] = {}
66
65
  _NO_CURSOR_STATE: Mapping[str, Any] = {}
67
66
  _GLOBAL_STATE_KEY = "state"
@@ -180,16 +179,6 @@ class ConcurrentPerPartitionCursor(Cursor):
180
179
 
181
180
  self._emit_state_message()
182
181
 
183
- gc.collect()
184
- alive = [o for o in gc.get_objects() if isinstance(o, ConcurrentCursor)]
185
- print(f"ConcurrentCursor {len(alive)=}")
186
-
187
- alive = [o for o in gc.get_objects() if isinstance(o, threading.Semaphore)]
188
- print(f"Semaphores {len(alive)=}")
189
-
190
- alive = [o for o in gc.get_objects() if isinstance(o, dict)]
191
- print(f"Dictionaries {len(alive)=}")
192
-
193
182
  def _check_and_update_parent_state(self) -> None:
194
183
  last_closed_state = None
195
184
 
@@ -306,7 +295,6 @@ class ConcurrentPerPartitionCursor(Cursor):
306
295
  ):
307
296
  self._partition_parent_state_map[partition_key] = (deepcopy(parent_state), seq)
308
297
 
309
- # try:
310
298
  for cursor_slice, is_last_slice, _ in iterate_with_last_flag_and_state(
311
299
  cursor.stream_slices(),
312
300
  lambda: None,
@@ -318,7 +306,6 @@ class ConcurrentPerPartitionCursor(Cursor):
318
306
  partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
319
307
  )
320
308
 
321
-
322
309
  def _ensure_partition_limit(self) -> None:
323
310
  """
324
311
  Ensure the maximum number of partitions does not exceed the predefined limit.
@@ -348,7 +335,7 @@ class ConcurrentPerPartitionCursor(Cursor):
348
335
  oldest_partition = self._cursor_per_partition.pop(
349
336
  partition_key
350
337
  ) # Remove the oldest partition
351
- logger.warning(
338
+ logger.debug(
352
339
  f"The maximum number of partitions has been reached. Dropping the oldest finished partition: {oldest_partition}. Over limit: {self._number_of_partitions - self.DEFAULT_MAX_PARTITIONS_NUMBER}."
353
340
  )
354
341
  break
@@ -505,10 +492,11 @@ class ConcurrentPerPartitionCursor(Cursor):
505
492
  def _create_cursor(
506
493
  self, cursor_state: Any, runtime_lookback_window: int = 0
507
494
  ) -> ConcurrentCursor:
508
- return self._cursor_factory.create(
495
+ cursor = self._cursor_factory.create(
509
496
  stream_state=deepcopy(cursor_state),
510
497
  runtime_lookback_window=timedelta(seconds=runtime_lookback_window),
511
498
  )
499
+ return cursor
512
500
 
513
501
  def should_be_synced(self, record: Record) -> bool:
514
502
  return self._get_cursor(record).should_be_synced(record)
@@ -523,7 +511,8 @@ class ConcurrentPerPartitionCursor(Cursor):
523
511
  raise ValueError(
524
512
  "Invalid state as stream slices that are emitted should refer to an existing cursor"
525
513
  )
526
- return self._cursor_per_partition[partition_key]
514
+ cursor = self._cursor_per_partition[partition_key]
515
+ return cursor
527
516
 
528
517
  def limit_reached(self) -> bool:
529
518
  return self._number_of_partitions > self.SWITCH_TO_GLOBAL_LIMIT
@@ -145,7 +145,7 @@ class JinjaInterpolation(Interpolation):
145
145
  # It can be returned as is
146
146
  return s
147
147
 
148
- # @cache
148
+ @cache
149
149
  def _find_undeclared_variables(self, s: Optional[str]) -> Set[str]:
150
150
  """
151
151
  Find undeclared variables and cache them
@@ -153,7 +153,7 @@ class JinjaInterpolation(Interpolation):
153
153
  ast = _ENVIRONMENT.parse(s) # type: ignore # parse is able to handle None
154
154
  return meta.find_undeclared_variables(ast)
155
155
 
156
- # @cache
156
+ @cache
157
157
  def _compile(self, s: str) -> Template:
158
158
  """
159
159
  We must cache the Jinja Template ourselves because we're using `from_string` instead of a template loader
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.51.0.post8.dev15492684389
3
+ Version: 6.51.0.post9.dev15582628322
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -111,7 +111,7 @@ airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=vCpwX1PVRFP
111
111
  airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py,sha256=WJyA2OYIEgFpVP5Y3o0tIj69AV6IKkn9B16MeXaEItI,6513
112
112
  airbyte_cdk/sources/declarative/extractors/type_transformer.py,sha256=d6Y2Rfg8pMVEEnHllfVksWZdNVOU55yk34O03dP9muY,1626
113
113
  airbyte_cdk/sources/declarative/incremental/__init__.py,sha256=U1oZKtBaEC6IACmvziY9Wzg7Z8EgF4ZuR7NwvjlB_Sk,1255
114
- airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha256=AjS24owY5oNP4Z6GbG7VlKIvKKlaf6IiFrQqoDZm6Xg,22988
114
+ airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha256=araWk039M89c6lQHEUltfM1VI_xGw9gZIDXRWWF6SkM,22591
115
115
  airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py,sha256=Rbe6lJLTtZ5en33MwZiB9-H9-AwDMNHgwBZs8EqhYqk,22172
116
116
  airbyte_cdk/sources/declarative/incremental/declarative_cursor.py,sha256=5Bhw9VRPyIuCaD0wmmq_L3DZsa-rJgtKSEUzSd8YYD0,536
117
117
  airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py,sha256=2tsE6FgXzemf4fZZ4uGtd8QpRBl9GJ2CRqSNJE5p0EI,16077
@@ -125,7 +125,7 @@ airbyte_cdk/sources/declarative/interpolation/interpolated_mapping.py,sha256=h36
125
125
  airbyte_cdk/sources/declarative/interpolation/interpolated_nested_mapping.py,sha256=myVaNtFqxOAwrbp93rgd1dhkqyuvXvET9rsimQ89ktc,1873
126
126
  airbyte_cdk/sources/declarative/interpolation/interpolated_string.py,sha256=CQkHqGlfa87G6VYMtBAQWin7ECKpfMdrDcg0JO5_rhc,3212
127
127
  airbyte_cdk/sources/declarative/interpolation/interpolation.py,sha256=9IoeuWam3L6GyN10L6U8xNWXmkt9cnahSDNkez1OmFY,982
128
- airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=y-m7Iu1EQGEPUkmtXYcSdJTucQj67tcXvV3QJyNTQWU,7186
128
+ airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=UQeuS4Vpyp4hlOn-R3tRyeBX0e9IoV6jQ6gH-Jz8lY0,7182
129
129
  airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=UYSJ5gW7TkHALYnNvUnRP3RlyGwGuRMObF3BHuNzjJM,5320
130
130
  airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=AVb86oWIAxAOrE3KAyNr81bF5Dd2QjKdQ6E4Jl4yrQw,24719
131
131
  airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -419,9 +419,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
419
419
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
420
420
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
421
421
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
422
- airbyte_cdk-6.51.0.post8.dev15492684389.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
423
- airbyte_cdk-6.51.0.post8.dev15492684389.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
424
- airbyte_cdk-6.51.0.post8.dev15492684389.dist-info/METADATA,sha256=QS6CSTvQH-DFLtv0_nul6yIIuO6hH3iB8UC9xMUNS4A,6364
425
- airbyte_cdk-6.51.0.post8.dev15492684389.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
426
- airbyte_cdk-6.51.0.post8.dev15492684389.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
427
- airbyte_cdk-6.51.0.post8.dev15492684389.dist-info/RECORD,,
422
+ airbyte_cdk-6.51.0.post9.dev15582628322.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
423
+ airbyte_cdk-6.51.0.post9.dev15582628322.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
424
+ airbyte_cdk-6.51.0.post9.dev15582628322.dist-info/METADATA,sha256=fLMVooGtQA4iha7ZEeM69ZueOJ05qTP_0cKuMdgB1Vo,6364
425
+ airbyte_cdk-6.51.0.post9.dev15582628322.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
426
+ airbyte_cdk-6.51.0.post9.dev15582628322.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
427
+ airbyte_cdk-6.51.0.post9.dev15582628322.dist-info/RECORD,,