airbyte-cdk 6.51.0.post7.dev15492779494__py3-none-any.whl → 6.51.0.post10.dev15563911928__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,6 +27,7 @@ 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
30
31
 
31
32
  logger = logging.getLogger("airbyte")
32
33
 
@@ -59,8 +60,8 @@ class ConcurrentPerPartitionCursor(Cursor):
59
60
  CurrentPerPartitionCursor expects the state of the ConcurrentCursor to follow the format {cursor_field: cursor_value}.
60
61
  """
61
62
 
62
- DEFAULT_MAX_PARTITIONS_NUMBER = 25_000
63
- SWITCH_TO_GLOBAL_LIMIT = 10_000
63
+ DEFAULT_MAX_PARTITIONS_NUMBER = 250
64
+ SWITCH_TO_GLOBAL_LIMIT = 100
64
65
  _NO_STATE: Mapping[str, Any] = {}
65
66
  _NO_CURSOR_STATE: Mapping[str, Any] = {}
66
67
  _GLOBAL_STATE_KEY = "state"
@@ -179,6 +180,16 @@ class ConcurrentPerPartitionCursor(Cursor):
179
180
 
180
181
  self._emit_state_message()
181
182
 
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
+
182
193
  def _check_and_update_parent_state(self) -> None:
183
194
  last_closed_state = None
184
195
 
@@ -295,20 +306,17 @@ class ConcurrentPerPartitionCursor(Cursor):
295
306
  ):
296
307
  self._partition_parent_state_map[partition_key] = (deepcopy(parent_state), seq)
297
308
 
298
- try:
299
- for cursor_slice, is_last_slice, _ in iterate_with_last_flag_and_state(
300
- cursor.stream_slices(),
301
- lambda: None,
302
- ):
303
- self._semaphore_per_partition[partition_key].release()
304
- if is_last_slice:
305
- self._partitions_done_generating_stream_slices.add(partition_key)
306
- yield StreamSlice(
307
- partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
308
- )
309
- finally:
310
- del cursor
311
- del partition
309
+ for cursor_slice, is_last_slice, _ in iterate_with_last_flag_and_state(
310
+ cursor.stream_slices(),
311
+ lambda: None,
312
+ ):
313
+ self._semaphore_per_partition[partition_key].release()
314
+ if is_last_slice:
315
+ self._partitions_done_generating_stream_slices.add(partition_key)
316
+ yield StreamSlice(
317
+ partition=partition, cursor_slice=cursor_slice, extra_fields=partition.extra_fields
318
+ )
319
+
312
320
 
313
321
  def _ensure_partition_limit(self) -> None:
314
322
  """
@@ -339,7 +347,7 @@ class ConcurrentPerPartitionCursor(Cursor):
339
347
  oldest_partition = self._cursor_per_partition.pop(
340
348
  partition_key
341
349
  ) # Remove the oldest partition
342
- logger.warning(
350
+ logger.debug(
343
351
  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}."
344
352
  )
345
353
  break
@@ -145,16 +145,18 @@ class JinjaInterpolation(Interpolation):
145
145
  # It can be returned as is
146
146
  return s
147
147
 
148
- # @cache
149
- def _find_undeclared_variables(self, s: Optional[str]) -> Set[str]:
148
+ @staticmethod
149
+ @cache
150
+ def _find_undeclared_variables(s: Optional[str]) -> Set[str]:
150
151
  """
151
152
  Find undeclared variables and cache them
152
153
  """
153
154
  ast = _ENVIRONMENT.parse(s) # type: ignore # parse is able to handle None
154
155
  return meta.find_undeclared_variables(ast)
155
156
 
156
- # @cache
157
- def _compile(self, s: str) -> Template:
157
+ @staticmethod
158
+ @cache
159
+ def _compile(s: str) -> Template:
158
160
  """
159
161
  We must cache the Jinja Template ourselves because we're using `from_string` instead of a template loader
160
162
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.51.0.post7.dev15492779494
3
+ Version: 6.51.0.post10.dev15563911928
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=yhF9vgcZ8ZuIFk3kN9pFcKkvkmhH8ksVKLt9CELDvk4,22664
114
+ airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha256=mC4rwTLtp2omhKp_6-AQk4VcFZ9OJ-AwRwyXwYvsNqo,22971
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=YB-D5EIpTQ2yEdbyZvbOODl92hn_Mw0heQK2IYFyUMA,7206
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.post7.dev15492779494.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
423
- airbyte_cdk-6.51.0.post7.dev15492779494.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
424
- airbyte_cdk-6.51.0.post7.dev15492779494.dist-info/METADATA,sha256=J-FvjaxFZ_sNCiyO5VDE0wRN8ufWo4yeOKZSwOBJaos,6364
425
- airbyte_cdk-6.51.0.post7.dev15492779494.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
426
- airbyte_cdk-6.51.0.post7.dev15492779494.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
427
- airbyte_cdk-6.51.0.post7.dev15492779494.dist-info/RECORD,,
422
+ airbyte_cdk-6.51.0.post10.dev15563911928.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
423
+ airbyte_cdk-6.51.0.post10.dev15563911928.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
424
+ airbyte_cdk-6.51.0.post10.dev15563911928.dist-info/METADATA,sha256=SbeCvV1psFzK9d8iig2Yk__iZUOoNs3G-pnGtuDXiAA,6365
425
+ airbyte_cdk-6.51.0.post10.dev15563911928.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
426
+ airbyte_cdk-6.51.0.post10.dev15563911928.dist-info/entry_points.txt,sha256=AKWbEkHfpzzk9nF9tqBUaw1MbvTM4mGtEzmZQm0ZWvM,139
427
+ airbyte_cdk-6.51.0.post10.dev15563911928.dist-info/RECORD,,