airbyte-cdk 6.33.2.dev0__py3-none-any.whl → 6.33.3__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.
@@ -6,12 +6,10 @@ import abc
6
6
  import dataclasses
7
7
  import datetime
8
8
  import logging
9
- import re
10
9
  import time
11
- from dataclasses import InitVar, dataclass, field
12
10
  from datetime import timedelta
13
11
  from threading import RLock
14
- from typing import TYPE_CHECKING, Any, Mapping, Optional, Union
12
+ from typing import TYPE_CHECKING, Any, Mapping, Optional
15
13
  from urllib import parse
16
14
 
17
15
  import requests
@@ -162,100 +160,6 @@ class HttpRequestMatcher(RequestMatcher):
162
160
  return True
163
161
 
164
162
 
165
- class HttpRequestRegexMatcher(RequestMatcher):
166
- """
167
- Extended RequestMatcher for HTTP requests that supports matching on:
168
- - HTTP method (case-insensitive)
169
- - URL base (scheme + netloc) optionally
170
- - URL path pattern (a regex applied to the path portion of the URL)
171
- - Query parameters (must be present)
172
- - Headers (header names compared case-insensitively)
173
- """
174
-
175
- def __init__(
176
- self,
177
- method: Optional[str] = None,
178
- url_base: Optional[str] = None,
179
- url_path_pattern: Optional[str] = None,
180
- params: Optional[Mapping[str, Any]] = None,
181
- headers: Optional[Mapping[str, Any]] = None,
182
- ):
183
- """
184
- :param method: HTTP method (e.g. "GET", "POST"); compared case-insensitively.
185
- :param url_base: Base URL (scheme://host) that must match.
186
- :param url_path_pattern: A regex pattern that will be applied to the path portion of the URL.
187
- :param params: Dictionary of query parameters that must be present in the request.
188
- :param headers: Dictionary of headers that must be present (header keys are compared case-insensitively).
189
- """
190
- self._method = method.upper() if method else None
191
-
192
- # Normalize the url_base if provided: remove trailing slash.
193
- self._url_base = url_base.rstrip("/") if url_base else None
194
-
195
- # Compile the URL path pattern if provided.
196
- self._url_path_pattern = re.compile(url_path_pattern) if url_path_pattern else None
197
-
198
- # Normalize query parameters to strings.
199
- self._params = {str(k): str(v) for k, v in (params or {}).items()}
200
-
201
- # Normalize header keys to lowercase.
202
- self._headers = {str(k).lower(): str(v) for k, v in (headers or {}).items()}
203
-
204
- @staticmethod
205
- def _match_dict(obj: Mapping[str, Any], pattern: Mapping[str, Any]) -> bool:
206
- """Check that every key/value in the pattern exists in the object."""
207
- return pattern.items() <= obj.items()
208
-
209
- def __call__(self, request: Any) -> bool:
210
- """
211
- :param request: A requests.Request or requests.PreparedRequest instance.
212
- :return: True if the request matches all provided criteria; False otherwise.
213
- """
214
- # Prepare the request (if needed) and extract the URL details.
215
- if isinstance(request, requests.Request):
216
- prepared_request = request.prepare()
217
- elif isinstance(request, requests.PreparedRequest):
218
- prepared_request = request
219
- else:
220
- return False
221
-
222
- # Check HTTP method.
223
- if self._method is not None and prepared_request.method is not None:
224
- if prepared_request.method.upper() != self._method:
225
- return False
226
-
227
- # Parse the URL.
228
- parsed_url = parse.urlsplit(prepared_request.url)
229
- # Reconstruct the base: scheme://netloc
230
- request_url_base = f"{str(parsed_url.scheme)}://{str(parsed_url.netloc)}"
231
- # The path (without query parameters)
232
- request_path = str(parsed_url.path).rstrip("/")
233
-
234
- # If a base URL is provided, check that it matches.
235
- if self._url_base is not None:
236
- if request_url_base != self._url_base:
237
- return False
238
-
239
- # If a URL path pattern is provided, ensure the path matches the regex.
240
- if self._url_path_pattern is not None:
241
- if not self._url_path_pattern.search(request_path):
242
- return False
243
-
244
- # Check query parameters.
245
- if self._params:
246
- query_params = dict(parse.parse_qsl(str(parsed_url.query)))
247
- if not self._match_dict(query_params, self._params):
248
- return False
249
-
250
- # Check headers (normalize keys to lower-case).
251
- if self._headers:
252
- req_headers = {k.lower(): v for k, v in prepared_request.headers.items()}
253
- if not self._match_dict(req_headers, self._headers):
254
- return False
255
-
256
- return True
257
-
258
-
259
163
  class BaseCallRatePolicy(AbstractCallRatePolicy, abc.ABC):
260
164
  def __init__(self, matchers: list[RequestMatcher]):
261
165
  self._matchers = matchers
@@ -495,17 +399,24 @@ class AbstractAPIBudget(abc.ABC):
495
399
  """
496
400
 
497
401
 
498
- @dataclass
499
402
  class APIBudget(AbstractAPIBudget):
500
- """
501
- Default APIBudget implementation.
502
- """
403
+ """Default APIBudget implementation"""
404
+
405
+ def __init__(
406
+ self, policies: list[AbstractCallRatePolicy], maximum_attempts_to_acquire: int = 100000
407
+ ) -> None:
408
+ """Constructor
409
+
410
+ :param policies: list of policies in this budget
411
+ :param maximum_attempts_to_acquire: number of attempts before throwing hit ratelimit exception, we put some big number here
412
+ to avoid situations when many threads compete with each other for a few lots over a significant amount of time
413
+ """
503
414
 
504
- policies: list[AbstractCallRatePolicy]
505
- maximum_attempts_to_acquire: int = 100000
415
+ self._policies = policies
416
+ self._maximum_attempts_to_acquire = maximum_attempts_to_acquire
506
417
 
507
418
  def get_matching_policy(self, request: Any) -> Optional[AbstractCallRatePolicy]:
508
- for policy in self.policies:
419
+ for policy in self._policies:
509
420
  if policy.matches(request):
510
421
  return policy
511
422
  return None
@@ -526,7 +437,7 @@ class APIBudget(AbstractAPIBudget):
526
437
  policy = self.get_matching_policy(request)
527
438
  if policy:
528
439
  self._do_acquire(request=request, policy=policy, block=block, timeout=timeout)
529
- elif self.policies:
440
+ elif self._policies:
530
441
  logger.info("no policies matched with requests, allow call by default")
531
442
 
532
443
  def update_from_response(self, request: Any, response: Any) -> None:
@@ -549,7 +460,7 @@ class APIBudget(AbstractAPIBudget):
549
460
  """
550
461
  last_exception = None
551
462
  # sometimes we spend all budget before a second attempt, so we have few more here
552
- for attempt in range(1, self.maximum_attempts_to_acquire):
463
+ for attempt in range(1, self._maximum_attempts_to_acquire):
553
464
  try:
554
465
  policy.try_acquire(request, weight=1)
555
466
  return
@@ -573,18 +484,31 @@ class APIBudget(AbstractAPIBudget):
573
484
 
574
485
  if last_exception:
575
486
  logger.info(
576
- "we used all %s attempts to acquire and failed", self.maximum_attempts_to_acquire
487
+ "we used all %s attempts to acquire and failed", self._maximum_attempts_to_acquire
577
488
  )
578
489
  raise last_exception
579
490
 
580
491
 
581
- @dataclass
582
492
  class HttpAPIBudget(APIBudget):
583
493
  """Implementation of AbstractAPIBudget for HTTP"""
584
494
 
585
- ratelimit_reset_header: str = "ratelimit-reset"
586
- ratelimit_remaining_header: str = "ratelimit-remaining"
587
- status_codes_for_ratelimit_hit: Union[tuple[int], list[int]] = (429,)
495
+ def __init__(
496
+ self,
497
+ ratelimit_reset_header: str = "ratelimit-reset",
498
+ ratelimit_remaining_header: str = "ratelimit-remaining",
499
+ status_codes_for_ratelimit_hit: tuple[int] = (429,),
500
+ **kwargs: Any,
501
+ ):
502
+ """Constructor
503
+
504
+ :param ratelimit_reset_header: name of the header that has a timestamp of the next reset of call budget
505
+ :param ratelimit_remaining_header: name of the header that has the number of calls left
506
+ :param status_codes_for_ratelimit_hit: list of HTTP status codes that signal about rate limit being hit
507
+ """
508
+ self._ratelimit_reset_header = ratelimit_reset_header
509
+ self._ratelimit_remaining_header = ratelimit_remaining_header
510
+ self._status_codes_for_ratelimit_hit = status_codes_for_ratelimit_hit
511
+ super().__init__(**kwargs)
588
512
 
589
513
  def update_from_response(self, request: Any, response: Any) -> None:
590
514
  policy = self.get_matching_policy(request)
@@ -599,17 +523,17 @@ class HttpAPIBudget(APIBudget):
599
523
  def get_reset_ts_from_response(
600
524
  self, response: requests.Response
601
525
  ) -> Optional[datetime.datetime]:
602
- if response.headers.get(self.ratelimit_reset_header):
526
+ if response.headers.get(self._ratelimit_reset_header):
603
527
  return datetime.datetime.fromtimestamp(
604
- int(response.headers[self.ratelimit_reset_header])
528
+ int(response.headers[self._ratelimit_reset_header])
605
529
  )
606
530
  return None
607
531
 
608
532
  def get_calls_left_from_response(self, response: requests.Response) -> Optional[int]:
609
- if response.headers.get(self.ratelimit_remaining_header):
610
- return int(response.headers[self.ratelimit_remaining_header])
533
+ if response.headers.get(self._ratelimit_remaining_header):
534
+ return int(response.headers[self._ratelimit_remaining_header])
611
535
 
612
- if response.status_code in self.status_codes_for_ratelimit_hit:
536
+ if response.status_code in self._status_codes_for_ratelimit_hit:
613
537
  return 0
614
538
 
615
539
  return None
@@ -261,6 +261,9 @@ class AbstractOauth2Authenticator(AuthBase):
261
261
 
262
262
  :return: expiration datetime
263
263
  """
264
+ if not value and not self.token_has_expired():
265
+ # No expiry token was provided but the previous one is not expired so it's fine
266
+ return self.get_token_expiry_date()
264
267
 
265
268
  if self.token_expiry_is_time_of_expiration:
266
269
  if not self.token_expiry_date_format:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 6.33.2.dev0
3
+ Version: 6.33.3
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://airbyte.com
6
6
  License: MIT
@@ -53,7 +53,7 @@ airbyte_cdk/sources/declarative/async_job/timer.py,sha256=Fb8P72CQ7jIzJyzMSSNuBf
53
53
  airbyte_cdk/sources/declarative/auth/__init__.py,sha256=e2CRrcBWGhz3sQu3Oh34d1riEIwXipGS8hrSB1pu0Oo,284
54
54
  airbyte_cdk/sources/declarative/auth/declarative_authenticator.py,sha256=nf-OmRUHYG4ORBwyb5CANzuHEssE-oNmL-Lccn41Td8,1099
55
55
  airbyte_cdk/sources/declarative/auth/jwt.py,sha256=SICqNsN2Cn_EgKadIgWuZpQxuMHyzrMZD_2-Uwy10rY,8539
56
- airbyte_cdk/sources/declarative/auth/oauth.py,sha256=fibXa-dqtM54jIUscWbz7DEA5uY6F2o1LfARjEeGRy0,13926
56
+ airbyte_cdk/sources/declarative/auth/oauth.py,sha256=SUfib1oSzlyRRnOSg8Bui73mfyrcyr9OssdchbKdu4s,14162
57
57
  airbyte_cdk/sources/declarative/auth/selective_authenticator.py,sha256=qGwC6YsCldr1bIeKG6Qo-A9a5cTdHw-vcOn3OtQrS4c,1540
58
58
  airbyte_cdk/sources/declarative/auth/token.py,sha256=2EnE78EhBOY9hbeZnQJ9AuFaM-G7dccU-oKo_LThRQk,11070
59
59
  airbyte_cdk/sources/declarative/auth/token_provider.py,sha256=9CuSsmOoHkvlc4k-oZ3Jx5luAgfTMm1I_5HOZxw7wMU,3075
@@ -63,17 +63,17 @@ airbyte_cdk/sources/declarative/checks/check_stream.py,sha256=dAA-UhmMj0WLXCkRQr
63
63
  airbyte_cdk/sources/declarative/checks/connection_checker.py,sha256=MBRJo6WJlZQHpIfOGaNOkkHUmgUl_4wDM6VPo41z5Ss,1383
64
64
  airbyte_cdk/sources/declarative/concurrency_level/__init__.py,sha256=5XUqrmlstYlMM0j6crktlKQwALek0uiz2D3WdM46MyA,191
65
65
  airbyte_cdk/sources/declarative/concurrency_level/concurrency_level.py,sha256=YIwCTCpOr_QSNW4ltQK0yUGWInI8PKNY216HOOegYLk,2101
66
- airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=7uqf_zQd2T08AYdMDJ80Zt0W1QHqZd-dvltXC-3g8W4,28136
66
+ airbyte_cdk/sources/declarative/concurrent_declarative_source.py,sha256=ThOqmaaqPykS2gTDKnlLSPy0p7djjV1Svazes58Rmic,28844
67
67
  airbyte_cdk/sources/declarative/datetime/__init__.py,sha256=l9LG7Qm6e5r_qgqfVKnx3mXYtg1I9MmMjomVIPfU4XA,177
68
68
  airbyte_cdk/sources/declarative/datetime/datetime_parser.py,sha256=SX9JjdesN1edN2WVUVMzU_ptqp2QB1OnsnjZ4mwcX7w,2579
69
69
  airbyte_cdk/sources/declarative/datetime/min_max_datetime.py,sha256=0BHBtDNQZfvwM45-tY5pNlTcKAFSGGNxemoi0Jic-0E,5785
70
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=_pL5eEPf9N7U5kyzfB6YJG2xUHAPNTrJSApLYlQS9vw,147556
70
+ airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=wmw4ZN8WF_QOWpe7bkzu31VHW-OjKIZ3g7z9nBoDdTo,138922
71
71
  airbyte_cdk/sources/declarative/declarative_source.py,sha256=nF7wBqFd3AQmEKAm4CnIo29CJoQL562cJGSCeL8U8bA,1531
72
72
  airbyte_cdk/sources/declarative/declarative_stream.py,sha256=venZjfpvtqr3oFSuvMBWtn4h9ayLhD4L65ACuXCDZ64,10445
73
- airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=KSpQetKGqPCv-38QgcVJ5kzM5nzbFldTSsYDCS3Xf0Y,1035
74
- airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py,sha256=kQfUVMVhChKe5OngwIQrs0F9KGnRUN-CKVFakCU23DQ,4354
73
+ airbyte_cdk/sources/declarative/decoders/__init__.py,sha256=JHb_0d3SE6kNY10mxA5YBEKPeSbsWYjByq1gUQxepoE,953
74
+ airbyte_cdk/sources/declarative/decoders/composite_raw_decoder.py,sha256=kg5_kNlhXj8p9GZFztlbG16pk1XcMtP9ezqulq1VNg4,4545
75
75
  airbyte_cdk/sources/declarative/decoders/decoder.py,sha256=sl-Gt8lXi7yD2Q-sD8je5QS2PbgrgsYjxRLWsay7DMc,826
76
- airbyte_cdk/sources/declarative/decoders/json_decoder.py,sha256=qdbjeR6RffKaah_iWvMsOcDolYuxJY5DaI3b9AMTZXg,3327
76
+ airbyte_cdk/sources/declarative/decoders/json_decoder.py,sha256=BdWpXXPhEGf_zknggJmhojLosmxuw51RBVTS0jvdCPc,2080
77
77
  airbyte_cdk/sources/declarative/decoders/noop_decoder.py,sha256=iZh0yKY_JzgBnJWiubEusf5c0o6Khd-8EWFWT-8EgFo,542
78
78
  airbyte_cdk/sources/declarative/decoders/pagination_decoder_decorator.py,sha256=ZVBZhAOl0I0MymXN5CKTC-kIXG4GuUQAEyn0XpUDuSE,1081
79
79
  airbyte_cdk/sources/declarative/decoders/xml_decoder.py,sha256=EU-7t-5vIGRHZ14h-f0GUE4V5-eTM9Flux-A8xgI1Rc,3117
@@ -88,7 +88,7 @@ airbyte_cdk/sources/declarative/extractors/record_selector.py,sha256=tjNwcURmlyD
88
88
  airbyte_cdk/sources/declarative/extractors/response_to_file_extractor.py,sha256=LhqGDfX06_dDYLKsIVnwQ_nAWCln-v8PV7Wgt_QVeTI,6533
89
89
  airbyte_cdk/sources/declarative/extractors/type_transformer.py,sha256=d6Y2Rfg8pMVEEnHllfVksWZdNVOU55yk34O03dP9muY,1626
90
90
  airbyte_cdk/sources/declarative/incremental/__init__.py,sha256=U1oZKtBaEC6IACmvziY9Wzg7Z8EgF4ZuR7NwvjlB_Sk,1255
91
- airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha256=v2yeaGLHjvqar6aTvvAfrA70fMlvbgWwfyOnUowcoco,18027
91
+ airbyte_cdk/sources/declarative/incremental/concurrent_partition_cursor.py,sha256=5dbO47TFmC5Oz8TZ8DKXwXeZElz70xy2v2HJlZr5qVs,17751
92
92
  airbyte_cdk/sources/declarative/incremental/datetime_based_cursor.py,sha256=5Bl_2EeA4as0e3J23Yxp8Q8BXzh0nJ2NcGSgj3V0h2o,21954
93
93
  airbyte_cdk/sources/declarative/incremental/declarative_cursor.py,sha256=5Bhw9VRPyIuCaD0wmmq_L3DZsa-rJgtKSEUzSd8YYD0,536
94
94
  airbyte_cdk/sources/declarative/incremental/global_substream_cursor.py,sha256=9HO-QbL9akvjq2NP7l498RwLA4iQZlBMQW1tZbt34I8,15943
@@ -104,18 +104,18 @@ airbyte_cdk/sources/declarative/interpolation/interpolated_string.py,sha256=LYEZ
104
104
  airbyte_cdk/sources/declarative/interpolation/interpolation.py,sha256=-V5UddGm69UKEB6o_O1EIES9kfY8FV_X4Ji8w1yOuSA,981
105
105
  airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=BtsY_jtT4MihFqeQgc05HXj3Ndt-e2ESQgGwbg3Sdxc,6430
106
106
  airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=Y5AWYxbJTUtJ_Jm7DV9qrZDiymFR9LST7fBt4piT2-U,4585
107
- airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=TN6GCgLXaWDONTaJwQ3A5ELqC-sxwKz-UYSraJYB-dI,17078
107
+ airbyte_cdk/sources/declarative/manifest_declarative_source.py,sha256=26qMXRugdPAd3zyYRH6YpNi--TorGZVOtxzY5O6muL0,16912
108
108
  airbyte_cdk/sources/declarative/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
109
  airbyte_cdk/sources/declarative/migrations/legacy_to_per_partition_state_migration.py,sha256=iemy3fKLczcU0-Aor7tx5jcT6DRedKMqyK7kCOp01hg,3924
110
110
  airbyte_cdk/sources/declarative/migrations/state_migration.py,sha256=KWPjealMLKSMtajXgkdGgKg7EmTLR-CqqD7UIh0-eDU,794
111
111
  airbyte_cdk/sources/declarative/models/__init__.py,sha256=nUFxNCiKeYRVXuZEKA7GD-lTHxsiKcQ8FitZjKhPIvE,100
112
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=4C2CQ3IkDI39X0Pkf5j-X5pfKUVTrfwjy6wAJoaI6cE,104148
112
+ airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=had38ukkEWp1ShNoGphnYu2dSbxZP6BAymO2Po-ZAvU,98100
113
113
  airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
114
114
  airbyte_cdk/sources/declarative/parsers/custom_code_compiler.py,sha256=958MMX6_ZOJUlDDdNr9Krosgi2bCKGx2Z765M2Woz18,5505
115
115
  airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=Rir9_z3Kcd5Es0-LChrzk-0qubAsiK_RSEnLmK2OXm8,553
116
116
  airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=CXwTfD3wSQq3okcqwigpprbHhSURUokh4GK2OmOyKC8,9132
117
117
  airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=IWUOdF03o-aQn0Occo1BJCxU0Pz-QILk5L67nzw2thw,6803
118
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=xbGhVLZZGnXA2-W6ajv1v8pJl-L-5RdLcRQI77gF4CQ,134141
118
+ airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=rzWM5R9CBwS2Gg-f0Umkk1kq-QBfvXv9NaUHXMLKPKg,128859
119
119
  airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=HJ-Syp3p7RpyR_OK0X_a2kSyISfu3W-PKrRI16iY0a8,957
120
120
  airbyte_cdk/sources/declarative/partition_routers/async_job_partition_router.py,sha256=VelO7zKqKtzMJ35jyFeg0ypJLQC0plqqIBNXoBW1G2E,3001
121
121
  airbyte_cdk/sources/declarative/partition_routers/cartesian_product_stream_slicer.py,sha256=c5cuVFM6NFkuQqG8Z5IwkBuwDrvXZN1CunUOM_L0ezg,6892
@@ -139,7 +139,7 @@ airbyte_cdk/sources/declarative/requesters/error_handlers/default_http_response_
139
139
  airbyte_cdk/sources/declarative/requesters/error_handlers/error_handler.py,sha256=Tan66odx8VHzfdyyXMQkXz2pJYksllGqvxmpoajgcK4,669
140
140
  airbyte_cdk/sources/declarative/requesters/error_handlers/http_response_filter.py,sha256=E-fQbt4ShfxZVoqfnmOx69C6FUPWZz8BIqI3DN9Kcjs,7935
141
141
  airbyte_cdk/sources/declarative/requesters/http_job_repository.py,sha256=3GtOefPH08evlSUxaILkiKLTHbIspFY4qd5B3ZqNE60,10063
142
- airbyte_cdk/sources/declarative/requesters/http_requester.py,sha256=Ek5hS60-CYjvEaFD-bI7qA-bPgbOPb9hTbMBU4n5zNs,14994
142
+ airbyte_cdk/sources/declarative/requesters/http_requester.py,sha256=C6YT7t4UZMfarFeQ9fc362R5TbQ2jNSew8ESP-9yuZQ,14851
143
143
  airbyte_cdk/sources/declarative/requesters/paginators/__init__.py,sha256=uArbKs9JKNCt7t9tZoeWwjDpyI1HoPp29FNW0JzvaEM,644
144
144
  airbyte_cdk/sources/declarative/requesters/paginators/default_paginator.py,sha256=dSm_pKGOZjzvg-X_Vif-MjrnlUG23fCa69bocq8dVIs,11693
145
145
  airbyte_cdk/sources/declarative/requesters/paginators/no_pagination.py,sha256=j6j9QRPaTbKQ2N661RFVKthhkWiodEp6ut0tKeEd0Ng,2019
@@ -249,7 +249,7 @@ airbyte_cdk/sources/message/repository.py,sha256=SG7avgti_-dj8FcRHTTrhgLLGJbElv1
249
249
  airbyte_cdk/sources/source.py,sha256=KIBBH5VLEb8BZ8B9aROlfaI6OLoJqKDPMJ10jkAR7nk,3611
250
250
  airbyte_cdk/sources/streams/__init__.py,sha256=8fzTKpRTnSx5PggXgQPKJzHNZUV2BCA40N-dI6JM1xI,256
251
251
  airbyte_cdk/sources/streams/availability_strategy.py,sha256=_RU4JITrxMEN36g1RDHMu0iSw0I_3yWGfo5N8_YRvOg,3247
252
- airbyte_cdk/sources/streams/call_rate.py,sha256=WHMJ0-8xf0w_DiI0RkhPA8KEaPzaojNb23AEnKfcuS4,23939
252
+ airbyte_cdk/sources/streams/call_rate.py,sha256=Um_Ny8R7WZ2B0PWoxr-wrWPsgc5we7HrHalaMcozuVs,21052
253
253
  airbyte_cdk/sources/streams/checkpoint/__init__.py,sha256=3oy7Hd4ivVWTZlN6dKAf4Fv_G7U5iZrvhO9hT871UIo,712
254
254
  airbyte_cdk/sources/streams/checkpoint/checkpoint_reader.py,sha256=6HMT2NI-FQuaW0nt95NcyWrt5rZN4gF-Arx0sxdgbv4,15221
255
255
  airbyte_cdk/sources/streams/checkpoint/cursor.py,sha256=3e-3c-54k8U7Awno7DMmAD9ndbnl9OM48EnbEgeDUO0,3499
@@ -295,7 +295,7 @@ airbyte_cdk/sources/streams/http/http.py,sha256=0uariNq8OFnlX7iqOHwBhecxA-Hfd5hS
295
295
  airbyte_cdk/sources/streams/http/http_client.py,sha256=tDE0ROtxjGMVphvsw8INvGMtZ97hIF-v47pZ3jIyiwc,23011
296
296
  airbyte_cdk/sources/streams/http/rate_limiting.py,sha256=IwdjrHKUnU97XO4qONgYRv4YYW51xQ8SJm4WLafXDB8,6351
297
297
  airbyte_cdk/sources/streams/http/requests_native_auth/__init__.py,sha256=RN0D3nOX1xLgwEwKWu6pkGy3XqBFzKSNZ8Lf6umU2eY,413
298
- airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=n-jlPNcUtZkDv3hQEGqTzqVFuF0hbWHkru-po3ResFU,18596
298
+ airbyte_cdk/sources/streams/http/requests_native_auth/abstract_oauth.py,sha256=cM5CM1mnbTEMiY6gKHblGXr9KTS5VEziGoc-TXC302k,18791
299
299
  airbyte_cdk/sources/streams/http/requests_native_auth/abstract_token.py,sha256=Y3n7J-sk5yGjv_OxtY6Z6k0PEsFZmtIRi-x0KCbaHdA,1010
300
300
  airbyte_cdk/sources/streams/http/requests_native_auth/oauth.py,sha256=C2j2uVfi9d-3KgHO3NGxIiFdfASjHOtsd6g_LWPYOAs,20311
301
301
  airbyte_cdk/sources/streams/http/requests_native_auth/token.py,sha256=h5PTzcdH-RQLeCg7xZ45w_484OPUDSwNWl_iMJQmZoI,2526
@@ -351,9 +351,9 @@ airbyte_cdk/utils/slice_hasher.py,sha256=EDxgROHDbfG-QKQb59m7h_7crN1tRiawdf5uU7G
351
351
  airbyte_cdk/utils/spec_schema_transformations.py,sha256=-5HTuNsnDBAhj-oLeQXwpTGA0HdcjFOf2zTEMUTTg_Y,816
352
352
  airbyte_cdk/utils/stream_status_utils.py,sha256=ZmBoiy5HVbUEHAMrUONxZvxnvfV9CesmQJLDTAIWnWw,1171
353
353
  airbyte_cdk/utils/traced_exception.py,sha256=C8uIBuCL_E4WnBAOPSxBicD06JAldoN9fGsQDp463OY,6292
354
- airbyte_cdk-6.33.2.dev0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
355
- airbyte_cdk-6.33.2.dev0.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
356
- airbyte_cdk-6.33.2.dev0.dist-info/METADATA,sha256=D76JImBuU8pyQqjCVzw_L8x6Uk4h2f7d6Dlr1slygRI,6015
357
- airbyte_cdk-6.33.2.dev0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
358
- airbyte_cdk-6.33.2.dev0.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
359
- airbyte_cdk-6.33.2.dev0.dist-info/RECORD,,
354
+ airbyte_cdk-6.33.3.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
355
+ airbyte_cdk-6.33.3.dist-info/LICENSE_SHORT,sha256=aqF6D1NcESmpn-cqsxBtszTEnHKnlsp8L4x9wAh3Nxg,55
356
+ airbyte_cdk-6.33.3.dist-info/METADATA,sha256=9HhcwQNXxm0uygxeyX-dbdTPECBMbnDvXEM561ZP6fQ,6010
357
+ airbyte_cdk-6.33.3.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
358
+ airbyte_cdk-6.33.3.dist-info/entry_points.txt,sha256=fj-e3PAQvsxsQzyyq8UkG1k8spunWnD4BAH2AwlR6NM,95
359
+ airbyte_cdk-6.33.3.dist-info/RECORD,,