Skip to content

Commit 03352a3

Browse files
author
octavia-squidington-iii
committed
Auto-fix lint and format issues
1 parent 2a89d1a commit 03352a3

File tree

3 files changed

+64
-89
lines changed

3 files changed

+64
-89
lines changed

airbyte_cdk/sources/declarative/models/declarative_component_schema.py

Lines changed: 58 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -926,28 +926,24 @@ class OAuthConfigSpecification(BaseModel):
926926
class Config:
927927
extra = Extra.allow
928928

929-
oauth_user_input_from_connector_config_specification: Optional[Dict[str, Any]] = (
930-
Field(
931-
None,
932-
description="OAuth specific blob. This is a Json Schema used to validate Json configurations used as input to OAuth.\nMust be a valid non-nested JSON that refers to properties from ConnectorSpecification.connectionSpecification\nusing special annotation 'path_in_connector_config'.\nThese are input values the user is entering through the UI to authenticate to the connector, that might also shared\nas inputs for syncing data via the connector.\nExamples:\nif no connector values is shared during oauth flow, oauth_user_input_from_connector_config_specification=[]\nif connector values such as 'app_id' inside the top level are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['app_id']\n }\n }\nif connector values such as 'info.app_id' nested inside another object are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['info', 'app_id']\n }\n }",
933-
examples=[
934-
{"app_id": {"type": "string", "path_in_connector_config": ["app_id"]}},
935-
{
936-
"app_id": {
937-
"type": "string",
938-
"path_in_connector_config": ["info", "app_id"],
939-
}
940-
},
941-
],
942-
title="OAuth user input",
943-
)
929+
oauth_user_input_from_connector_config_specification: Optional[Dict[str, Any]] = Field(
930+
None,
931+
description="OAuth specific blob. This is a Json Schema used to validate Json configurations used as input to OAuth.\nMust be a valid non-nested JSON that refers to properties from ConnectorSpecification.connectionSpecification\nusing special annotation 'path_in_connector_config'.\nThese are input values the user is entering through the UI to authenticate to the connector, that might also shared\nas inputs for syncing data via the connector.\nExamples:\nif no connector values is shared during oauth flow, oauth_user_input_from_connector_config_specification=[]\nif connector values such as 'app_id' inside the top level are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['app_id']\n }\n }\nif connector values such as 'info.app_id' nested inside another object are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['info', 'app_id']\n }\n }",
932+
examples=[
933+
{"app_id": {"type": "string", "path_in_connector_config": ["app_id"]}},
934+
{
935+
"app_id": {
936+
"type": "string",
937+
"path_in_connector_config": ["info", "app_id"],
938+
}
939+
},
940+
],
941+
title="OAuth user input",
944942
)
945-
oauth_connector_input_specification: Optional[OauthConnectorInputSpecification] = (
946-
Field(
947-
None,
948-
description='The DeclarativeOAuth specific blob.\nPertains to the fields defined by the connector relating to the OAuth flow.\n\nInterpolation capabilities:\n- The variables placeholders are declared as `{{my_var}}`.\n- The nested resolution variables like `{{ {{my_nested_var}} }}` is allowed as well.\n\n- The allowed interpolation context is:\n + base64Encoder - encode to `base64`, {{ {{my_var_a}}:{{my_var_b}} | base64Encoder }}\n + base64Decorer - decode from `base64` encoded string, {{ {{my_string_variable_or_string_value}} | base64Decoder }}\n + urlEncoder - encode the input string to URL-like format, {{ https://test.host.com/endpoint | urlEncoder}}\n + urlDecorer - decode the input url-encoded string into text format, {{ urlDecoder:https%3A%2F%2Fairbyte.io | urlDecoder}}\n + codeChallengeS256 - get the `codeChallenge` encoded value to provide additional data-provider specific authorisation values, {{ {{state_value}} | codeChallengeS256 }}\n\nExamples:\n - The TikTok Marketing DeclarativeOAuth spec:\n {\n "oauth_connector_input_specification": {\n "type": "object",\n "additionalProperties": false,\n "properties": {\n "consent_url": "https://ads.tiktok.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{ {{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}",\n "access_token_url": "https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/",\n "access_token_params": {\n "{{ auth_code_key }}": "{{ auth_code_value }}",\n "{{ client_id_key }}": "{{ client_id_value }}",\n "{{ client_secret_key }}": "{{ client_secret_value }}"\n },\n "access_token_headers": {\n "Content-Type": "application/json",\n "Accept": "application/json"\n },\n "extract_output": ["data.access_token"],\n "client_id_key": "app_id",\n "client_secret_key": "secret",\n "auth_code_key": "auth_code"\n }\n }\n }',
949-
title="DeclarativeOAuth Connector Specification",
950-
)
943+
oauth_connector_input_specification: Optional[OauthConnectorInputSpecification] = Field(
944+
None,
945+
description='The DeclarativeOAuth specific blob.\nPertains to the fields defined by the connector relating to the OAuth flow.\n\nInterpolation capabilities:\n- The variables placeholders are declared as `{{my_var}}`.\n- The nested resolution variables like `{{ {{my_nested_var}} }}` is allowed as well.\n\n- The allowed interpolation context is:\n + base64Encoder - encode to `base64`, {{ {{my_var_a}}:{{my_var_b}} | base64Encoder }}\n + base64Decorer - decode from `base64` encoded string, {{ {{my_string_variable_or_string_value}} | base64Decoder }}\n + urlEncoder - encode the input string to URL-like format, {{ https://test.host.com/endpoint | urlEncoder}}\n + urlDecorer - decode the input url-encoded string into text format, {{ urlDecoder:https%3A%2F%2Fairbyte.io | urlDecoder}}\n + codeChallengeS256 - get the `codeChallenge` encoded value to provide additional data-provider specific authorisation values, {{ {{state_value}} | codeChallengeS256 }}\n\nExamples:\n - The TikTok Marketing DeclarativeOAuth spec:\n {\n "oauth_connector_input_specification": {\n "type": "object",\n "additionalProperties": false,\n "properties": {\n "consent_url": "https://ads.tiktok.com/marketing_api/auth?{{client_id_key}}={{client_id_value}}&{{redirect_uri_key}}={{ {{redirect_uri_value}} | urlEncoder}}&{{state_key}}={{state_value}}",\n "access_token_url": "https://business-api.tiktok.com/open_api/v1.3/oauth2/access_token/",\n "access_token_params": {\n "{{ auth_code_key }}": "{{ auth_code_value }}",\n "{{ client_id_key }}": "{{ client_id_value }}",\n "{{ client_secret_key }}": "{{ client_secret_value }}"\n },\n "access_token_headers": {\n "Content-Type": "application/json",\n "Accept": "application/json"\n },\n "extract_output": ["data.access_token"],\n "client_id_key": "app_id",\n "client_secret_key": "secret",\n "auth_code_key": "auth_code"\n }\n }\n }',
946+
title="DeclarativeOAuth Connector Specification",
951947
)
952948
complete_oauth_output_specification: Optional[Dict[str, Any]] = Field(
953949
None,
@@ -965,9 +961,7 @@ class Config:
965961
complete_oauth_server_input_specification: Optional[Dict[str, Any]] = Field(
966962
None,
967963
description="OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations.\nMust be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the\nserver when completing an OAuth flow (typically exchanging an auth code for refresh token).\nExamples:\n complete_oauth_server_input_specification={\n client_id: {\n type: string\n },\n client_secret: {\n type: string\n }\n }",
968-
examples=[
969-
{"client_id": {"type": "string"}, "client_secret": {"type": "string"}}
970-
],
964+
examples=[{"client_id": {"type": "string"}, "client_secret": {"type": "string"}}],
971965
title="OAuth input specification",
972966
)
973967
complete_oauth_server_output_specification: Optional[Dict[str, Any]] = Field(
@@ -1471,9 +1465,7 @@ class CustomConfigTransformation(BaseModel):
14711465
class_name: str = Field(
14721466
...,
14731467
description="Fully-qualified name of the class that will be implementing the custom config transformation. The format is `source_<name>.<package>.<class_name>`.",
1474-
examples=[
1475-
"source_declarative_manifest.components.MyCustomConfigTransformation"
1476-
],
1468+
examples=["source_declarative_manifest.components.MyCustomConfigTransformation"],
14771469
)
14781470
parameters: Optional[Dict[str, Any]] = Field(
14791471
None,
@@ -1891,9 +1883,7 @@ class OAuthAuthenticator(BaseModel):
18911883
scopes: Optional[List[str]] = Field(
18921884
None,
18931885
description="List of scopes that should be granted to the access token.",
1894-
examples=[
1895-
["crm.list.read", "crm.objects.contacts.read", "crm.schema.contacts.read"]
1896-
],
1886+
examples=[["crm.list.read", "crm.objects.contacts.read", "crm.schema.contacts.read"]],
18971887
title="Scopes",
18981888
)
18991889
token_expiry_date: Optional[str] = Field(
@@ -2092,9 +2082,7 @@ class RecordSelector(BaseModel):
20922082
description="Responsible for filtering records to be emitted by the Source.",
20932083
title="Record Filter",
20942084
)
2095-
schema_normalization: Optional[
2096-
Union[SchemaNormalization, CustomSchemaNormalization]
2097-
] = Field(
2085+
schema_normalization: Optional[Union[SchemaNormalization, CustomSchemaNormalization]] = Field(
20982086
None,
20992087
description="Responsible for normalization according to the schema.",
21002088
title="Schema Normalization",
@@ -2136,12 +2124,10 @@ class DpathValidator(BaseModel):
21362124
],
21372125
title="Field Path",
21382126
)
2139-
validation_strategy: Union[ValidateAdheresToSchema, CustomValidationStrategy] = (
2140-
Field(
2141-
...,
2142-
description="The condition that the specified config value will be evaluated against",
2143-
title="Validation Strategy",
2144-
)
2127+
validation_strategy: Union[ValidateAdheresToSchema, CustomValidationStrategy] = Field(
2128+
...,
2129+
description="The condition that the specified config value will be evaluated against",
2130+
title="Validation Strategy",
21452131
)
21462132

21472133

@@ -2158,12 +2144,10 @@ class PredicateValidator(BaseModel):
21582144
],
21592145
title="Value",
21602146
)
2161-
validation_strategy: Union[ValidateAdheresToSchema, CustomValidationStrategy] = (
2162-
Field(
2163-
...,
2164-
description="The validation strategy to apply to the value.",
2165-
title="Validation Strategy",
2166-
)
2147+
validation_strategy: Union[ValidateAdheresToSchema, CustomValidationStrategy] = Field(
2148+
...,
2149+
description="The validation strategy to apply to the value.",
2150+
title="Validation Strategy",
21672151
)
21682152

21692153

@@ -2188,12 +2172,12 @@ class ConfigAddFields(BaseModel):
21882172

21892173
class CompositeErrorHandler(BaseModel):
21902174
type: Literal["CompositeErrorHandler"]
2191-
error_handlers: List[
2192-
Union[CompositeErrorHandler, DefaultErrorHandler, CustomErrorHandler]
2193-
] = Field(
2194-
...,
2195-
description="List of error handlers to iterate on to determine how to handle a failed response.",
2196-
title="Error Handlers",
2175+
error_handlers: List[Union[CompositeErrorHandler, DefaultErrorHandler, CustomErrorHandler]] = (
2176+
Field(
2177+
...,
2178+
description="List of error handlers to iterate on to determine how to handle a failed response.",
2179+
title="Error Handlers",
2180+
)
21972181
)
21982182
parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
21992183

@@ -2360,9 +2344,9 @@ class Config:
23602344

23612345
type: Literal["DeclarativeSource"]
23622346
check: Union[CheckStream, CheckDynamicStream]
2363-
streams: Optional[
2364-
List[Union[ConditionalStreams, DeclarativeStream, StateDelegatingStream]]
2365-
] = None
2347+
streams: Optional[List[Union[ConditionalStreams, DeclarativeStream, StateDelegatingStream]]] = (
2348+
None
2349+
)
23662350
dynamic_streams: List[DynamicDeclarativeStream]
23672351
version: str = Field(
23682352
...,
@@ -2487,20 +2471,16 @@ class Config:
24872471
extra = Extra.allow
24882472

24892473
type: Literal["DeclarativeStream"]
2490-
name: Optional[str] = Field(
2491-
"", description="The stream name.", example=["Users"], title="Name"
2492-
)
2474+
name: Optional[str] = Field("", description="The stream name.", example=["Users"], title="Name")
24932475
retriever: Union[SimpleRetriever, AsyncRetriever, CustomRetriever] = Field(
24942476
...,
24952477
description="Component used to coordinate how records are extracted across stream slices and request pages.",
24962478
title="Retriever",
24972479
)
2498-
incremental_sync: Optional[Union[DatetimeBasedCursor, IncrementingCountCursor]] = (
2499-
Field(
2500-
None,
2501-
description="Component used to fetch data incrementally based on a time field in the data.",
2502-
title="Incremental Sync",
2503-
)
2480+
incremental_sync: Optional[Union[DatetimeBasedCursor, IncrementingCountCursor]] = Field(
2481+
None,
2482+
description="Component used to fetch data incrementally based on a time field in the data.",
2483+
title="Incremental Sync",
25042484
)
25052485
primary_key: Optional[PrimaryKey] = Field("", title="Primary Key")
25062486
schema_loader: Optional[
@@ -2674,20 +2654,18 @@ class HttpRequester(BaseModelWithDeprecations):
26742654
description="For APIs that require explicit specification of the properties to query for, this component will take a static or dynamic set of properties (which can be optionally split into chunks) and allow them to be injected into an outbound request by accessing stream_partition.extra_fields.",
26752655
title="Query Properties",
26762656
)
2677-
request_parameters: Optional[Union[Dict[str, Union[str, QueryProperties]], str]] = (
2678-
Field(
2679-
None,
2680-
description="Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.",
2681-
examples=[
2682-
{"unit": "day"},
2683-
{
2684-
"query": 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
2685-
},
2686-
{"searchIn": "{{ ','.join(config.get('search_in', [])) }}"},
2687-
{"sort_by[asc]": "updated_at"},
2688-
],
2689-
title="Query Parameters",
2690-
)
2657+
request_parameters: Optional[Union[Dict[str, Union[str, QueryProperties]], str]] = Field(
2658+
None,
2659+
description="Specifies the query parameters that should be set on an outgoing HTTP request given the inputs.",
2660+
examples=[
2661+
{"unit": "day"},
2662+
{
2663+
"query": 'last_event_time BETWEEN TIMESTAMP "{{ stream_interval.start_time }}" AND TIMESTAMP "{{ stream_interval.end_time }}"'
2664+
},
2665+
{"searchIn": "{{ ','.join(config.get('search_in', [])) }}"},
2666+
{"sort_by[asc]": "updated_at"},
2667+
],
2668+
title="Query Parameters",
26912669
)
26922670
request_headers: Optional[Union[Dict[str, str], str]] = Field(
26932671
None,
@@ -2859,9 +2837,7 @@ class QueryProperties(BaseModel):
28592837

28602838
class StateDelegatingStream(BaseModel):
28612839
type: Literal["StateDelegatingStream"]
2862-
name: str = Field(
2863-
..., description="The stream name.", example=["Users"], title="Name"
2864-
)
2840+
name: str = Field(..., description="The stream name.", example=["Users"], title="Name")
28652841
full_refresh_stream: DeclarativeStream = Field(
28662842
...,
28672843
description="Component used to coordinate how records are extracted across stream slices and request pages when the state is empty or not provided.",
@@ -2948,17 +2924,13 @@ class AsyncRetriever(BaseModel):
29482924
status_extractor: Union[DpathExtractor, CustomRecordExtractor] = Field(
29492925
..., description="Responsible for fetching the actual status of the async job."
29502926
)
2951-
download_target_extractor: Optional[
2952-
Union[DpathExtractor, CustomRecordExtractor]
2953-
] = Field(
2927+
download_target_extractor: Optional[Union[DpathExtractor, CustomRecordExtractor]] = Field(
29542928
None,
29552929
description="Responsible for fetching the final result `urls` provided by the completed / finished / ready async job.",
29562930
)
29572931
download_extractor: Optional[
29582932
Union[DpathExtractor, CustomRecordExtractor, ResponseToFileExtractor]
2959-
] = Field(
2960-
None, description="Responsible for fetching the records from provided urls."
2961-
)
2933+
] = Field(None, description="Responsible for fetching the records from provided urls.")
29622934
creation_requester: Union[HttpRequester, CustomRequester] = Field(
29632935
...,
29642936
description="Requester component that describes how to prepare HTTP requests to send to the source API to create the async server-side job.",

airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4153,7 +4153,7 @@ def create_http_api_budget(
41534153
ratelimit_reset_header=model.ratelimit_reset_header or "ratelimit-reset",
41544154
ratelimit_remaining_header=model.ratelimit_remaining_header or "ratelimit-remaining",
41554155
status_codes_for_ratelimit_hit=model.status_codes_for_ratelimit_hit or [429],
4156-
path_for_status_code=model.path_for_status_code
4156+
path_for_status_code=model.path_for_status_code,
41574157
)
41584158

41594159
def create_fixed_window_call_rate_policy(

airbyte_cdk/sources/streams/call_rate.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import time
1212
from datetime import timedelta
1313
from threading import RLock
14-
from typing import TYPE_CHECKING, Any, Mapping, Optional, List
14+
from typing import TYPE_CHECKING, Any, List, Mapping, Optional
1515
from urllib import parse
1616

1717
import requests
@@ -676,7 +676,10 @@ def get_calls_left_from_response(self, response: requests.Response) -> Optional[
676676

677677
if self._path_for_status_code:
678678
try:
679-
if functools.reduce(lambda a, b: a[b], self._path_for_status_code, response.json()) in self._status_codes_for_ratelimit_hit:
679+
if (
680+
functools.reduce(lambda a, b: a[b], self._path_for_status_code, response.json())
681+
in self._status_codes_for_ratelimit_hit
682+
):
680683
return 0
681684
except KeyError:
682685
# the status is not present in the response so we will assume that we're not being rate limited

0 commit comments

Comments
 (0)