Skip to content

Commit 33b9f83

Browse files
author
octavia-squidington-iii
committed
Auto-fix lint and format issues
1 parent b537602 commit 33b9f83

File tree

5 files changed

+57
-59
lines changed

5 files changed

+57
-59
lines changed

airbyte_cdk/sources/declarative/models/declarative_component_schema.py

Lines changed: 28 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -609,9 +609,7 @@ class OAuthAuthenticator(BaseModel):
609609
scopes: Optional[List[str]] = Field(
610610
None,
611611
description="List of scopes that should be granted to the access token.",
612-
examples=[
613-
["crm.list.read", "crm.objects.contacts.read", "crm.schema.contacts.read"]
614-
],
612+
examples=[["crm.list.read", "crm.objects.contacts.read", "crm.schema.contacts.read"]],
615613
title="Scopes",
616614
)
617615
token_expiry_date: Optional[str] = Field(
@@ -1080,28 +1078,24 @@ class OAuthConfigSpecification(BaseModel):
10801078
class Config:
10811079
extra = Extra.allow
10821080

1083-
oauth_user_input_from_connector_config_specification: Optional[Dict[str, Any]] = (
1084-
Field(
1085-
None,
1086-
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 }",
1087-
examples=[
1088-
{"app_id": {"type": "string", "path_in_connector_config": ["app_id"]}},
1089-
{
1090-
"app_id": {
1091-
"type": "string",
1092-
"path_in_connector_config": ["info", "app_id"],
1093-
}
1094-
},
1095-
],
1096-
title="OAuth user input",
1097-
)
1081+
oauth_user_input_from_connector_config_specification: Optional[Dict[str, Any]] = Field(
1082+
None,
1083+
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 }",
1084+
examples=[
1085+
{"app_id": {"type": "string", "path_in_connector_config": ["app_id"]}},
1086+
{
1087+
"app_id": {
1088+
"type": "string",
1089+
"path_in_connector_config": ["info", "app_id"],
1090+
}
1091+
},
1092+
],
1093+
title="OAuth user input",
10981094
)
1099-
oauth_connector_input_specification: Optional[OauthConnectorInputSpecification] = (
1100-
Field(
1101-
None,
1102-
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 }',
1103-
title="DeclarativeOAuth Connector Specification",
1104-
)
1095+
oauth_connector_input_specification: Optional[OauthConnectorInputSpecification] = Field(
1096+
None,
1097+
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 }',
1098+
title="DeclarativeOAuth Connector Specification",
11051099
)
11061100
complete_oauth_output_specification: Optional[Dict[str, Any]] = Field(
11071101
None,
@@ -1119,9 +1113,7 @@ class Config:
11191113
complete_oauth_server_input_specification: Optional[Dict[str, Any]] = Field(
11201114
None,
11211115
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 }",
1122-
examples=[
1123-
{"client_id": {"type": "string"}, "client_secret": {"type": "string"}}
1124-
],
1116+
examples=[{"client_id": {"type": "string"}, "client_secret": {"type": "string"}}],
11251117
title="OAuth input specification",
11261118
)
11271119
complete_oauth_server_output_specification: Optional[Dict[str, Any]] = Field(
@@ -1774,9 +1766,7 @@ class RecordSelector(BaseModel):
17741766
description="Responsible for filtering records to be emitted by the Source.",
17751767
title="Record Filter",
17761768
)
1777-
schema_normalization: Optional[
1778-
Union[SchemaNormalization, CustomSchemaNormalization]
1779-
] = Field(
1769+
schema_normalization: Optional[Union[SchemaNormalization, CustomSchemaNormalization]] = Field(
17801770
SchemaNormalization.None_,
17811771
description="Responsible for normalization according to the schema.",
17821772
title="Schema Normalization",
@@ -1997,9 +1987,7 @@ class Config:
19971987
description="Component used to fetch data incrementally based on a time field in the data.",
19981988
title="Incremental Sync",
19991989
)
2000-
name: Optional[str] = Field(
2001-
"", description="The stream name.", example=["Users"], title="Name"
2002-
)
1990+
name: Optional[str] = Field("", description="The stream name.", example=["Users"], title="Name")
20031991
primary_key: Optional[PrimaryKey] = Field(
20041992
"", description="The primary key of the stream.", title="Primary Key"
20051993
)
@@ -2273,11 +2261,7 @@ class SimpleRetriever(BaseModel):
22732261
CustomPartitionRouter,
22742262
ListPartitionRouter,
22752263
SubstreamPartitionRouter,
2276-
List[
2277-
Union[
2278-
CustomPartitionRouter, ListPartitionRouter, SubstreamPartitionRouter
2279-
]
2280-
],
2264+
List[Union[CustomPartitionRouter, ListPartitionRouter, SubstreamPartitionRouter]],
22812265
]
22822266
] = Field(
22832267
[],
@@ -2326,9 +2310,7 @@ class AsyncRetriever(BaseModel):
23262310
)
23272311
download_extractor: Optional[
23282312
Union[CustomRecordExtractor, DpathExtractor, ResponseToFileExtractor]
2329-
] = Field(
2330-
None, description="Responsible for fetching the records from provided urls."
2331-
)
2313+
] = Field(None, description="Responsible for fetching the records from provided urls.")
23322314
creation_requester: Union[CustomRequester, HttpRequester] = Field(
23332315
...,
23342316
description="Requester component that describes how to prepare HTTP requests to send to the source API to create the async server-side job.",
@@ -2362,11 +2344,7 @@ class AsyncRetriever(BaseModel):
23622344
CustomPartitionRouter,
23632345
ListPartitionRouter,
23642346
SubstreamPartitionRouter,
2365-
List[
2366-
Union[
2367-
CustomPartitionRouter, ListPartitionRouter, SubstreamPartitionRouter
2368-
]
2369-
],
2347+
List[Union[CustomPartitionRouter, ListPartitionRouter, SubstreamPartitionRouter]],
23702348
]
23712349
] = Field(
23722350
[],
@@ -2434,12 +2412,10 @@ class DynamicDeclarativeStream(BaseModel):
24342412
stream_template: DeclarativeStream = Field(
24352413
..., description="Reference to the stream template.", title="Stream Template"
24362414
)
2437-
components_resolver: Union[HttpComponentsResolver, ConfigComponentsResolver] = (
2438-
Field(
2439-
...,
2440-
description="Component resolve and populates stream templates with components values.",
2441-
title="Components Resolver",
2442-
)
2415+
components_resolver: Union[HttpComponentsResolver, ConfigComponentsResolver] = Field(
2416+
...,
2417+
description="Component resolve and populates stream templates with components values.",
2418+
title="Components Resolver",
24432419
)
24442420

24452421

airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2718,7 +2718,7 @@ def create_simple_retriever(
27182718
)
27192719

27202720
if model.lazy_read_pointer and not bool(
2721-
self._connector_state_manager.get_stream_state(name, None)
2721+
self._connector_state_manager.get_stream_state(name, None)
27222722
):
27232723
if model.partition_router.type != "SubstreamPartitionRouterModel": # type: ignore[union-attr] # model.partition_router has BaseModel type
27242724
raise ValueError(
@@ -2731,7 +2731,8 @@ def create_simple_retriever(
27312731
for path in model.lazy_read_pointer
27322732
]
27332733
partition_router = self._create_component_from_model(
2734-
model=model.partition_router, config=config # type: ignore[arg-type]
2734+
model=model.partition_router,
2735+
config=config, # type: ignore[arg-type]
27352736
)
27362737
stream_slicer = (
27372738
self._create_component_from_model(model=incremental_sync, config=config)

airbyte_cdk/sources/declarative/partition_routers/substream_partition_router.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,9 @@ def _get_request_option(
144144
return params
145145

146146
def process_parent_record(
147-
self, parent_record: Union[AirbyteMessage, Record, Mapping[str, Any]], parent_stream_name: str
147+
self,
148+
parent_record: Union[AirbyteMessage, Record, Mapping[str, Any]],
149+
parent_stream_name: str,
148150
) -> Tuple[Optional[MutableMapping[str, Any]], Optional[MutableMapping[str, Any]]]:
149151
"""
150152
Processes and extracts data from a parent record, handling different record types

airbyte_cdk/sources/declarative/retrievers/__init__.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,10 @@
1010
SimpleRetrieverTestReadDecorator,
1111
)
1212

13-
__all__ = ["Retriever", "SimpleRetriever", "SimpleRetrieverTestReadDecorator", "AsyncRetriever", "LazySimpleRetriever"]
13+
__all__ = [
14+
"Retriever",
15+
"SimpleRetriever",
16+
"SimpleRetrieverTestReadDecorator",
17+
"AsyncRetriever",
18+
"LazySimpleRetriever",
19+
]

airbyte_cdk/sources/declarative/retrievers/simple_retriever.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,18 @@
66
from dataclasses import InitVar, dataclass, field
77
from functools import partial
88
from itertools import islice
9-
from typing import Any, Callable, Iterable, List, Mapping, Optional, Set, Tuple, Union, MutableMapping
9+
from typing import (
10+
Any,
11+
Callable,
12+
Iterable,
13+
List,
14+
Mapping,
15+
MutableMapping,
16+
Optional,
17+
Set,
18+
Tuple,
19+
Union,
20+
)
1021

1122
import dpath
1223
import requests
@@ -33,10 +44,10 @@
3344
from airbyte_cdk.sources.declarative.retrievers.retriever import Retriever
3445
from airbyte_cdk.sources.declarative.stream_slicers.stream_slicer import StreamSlicer
3546
from airbyte_cdk.sources.http_logger import format_http_message
47+
from airbyte_cdk.sources.source import ExperimentalClassWarning
3648
from airbyte_cdk.sources.streams.core import StreamData
3749
from airbyte_cdk.sources.types import Config, Record, StreamSlice, StreamState
3850
from airbyte_cdk.utils.mapping_helpers import combine_mappings
39-
from airbyte_cdk.sources.source import ExperimentalClassWarning
4051

4152
FULL_REFRESH_SYNC_COMPLETE_KEY = "__ab_full_refresh_sync_complete"
4253

@@ -682,7 +693,9 @@ def _read_pages(
682693

683694
yield from []
684695

685-
def _extract_child_records(self, parent_record: MutableMapping[str, Any]) -> MutableMapping[str, Any]:
696+
def _extract_child_records(
697+
self, parent_record: MutableMapping[str, Any]
698+
) -> MutableMapping[str, Any]:
686699
"""Extract child records from a parent record based on lazy pointers."""
687700
if not self.lazy_read_pointer:
688701
return parent_record

0 commit comments

Comments
 (0)