From 1bf8a6ba241f88590984a1ef36f9a31cc532561d Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 8 Feb 2023 11:16:34 -0800 Subject: [PATCH 1/9] fix test --- .../standardtest/source/AbstractSourceConnectorTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java index 0f4946dc2317..f4311322bca4 100644 --- a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java +++ b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java @@ -129,7 +129,7 @@ public abstract class AbstractSourceConnectorTest { ArgumentCaptor.forClass(io.airbyte.protocol.models.AirbyteCatalog.class); protected AirbyteCatalog getLastPersistedCatalog() { - return convertProtocolObject(lastPersistedCatalog.getValue(), AirbyteCatalog.class); + return convertProtocolObject(discoverWriteRequest.getValue().getCatalog(), AirbyteCatalog.class); } private final ArgumentCaptor discoverWriteRequest = From 70f476f3110244074db86e304e60071e2f757fab Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 8 Feb 2023 11:51:06 -0800 Subject: [PATCH 2/9] remove unused var --- ... name='mock.cache_filename' id='4722183184'> | Bin 0 -> 20480 bytes ... name='mock.cache_filename' id='4722262416'> | Bin 0 -> 20480 bytes ... name='mock.cache_filename' id='4722617024'> | Bin 0 -> 20480 bytes ... name='mock.cache_filename' id='4760215360'> | Bin 0 -> 20480 bytes ... name='mock.cache_filename' id='4776707456'> | Bin 0 -> 20480 bytes ... name='mock.cache_filename' id='4777559952'> | Bin 0 -> 20480 bytes airbyte-cdk/python/cache.sqlite | Bin 0 -> 20480 bytes airbyte-cdk/python/cache_http_stream.sqlite | Bin 0 -> 53248 bytes .../python/cache_http_stream_with_slices.sqlite | Bin 0 -> 20480 bytes .../source/AbstractSourceConnectorTest.java | 3 --- 10 files changed, 3 deletions(-) create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/cache.sqlite create mode 100644 airbyte-cdk/python/cache_http_stream.sqlite create mode 100644 airbyte-cdk/python/cache_http_stream_with_slices.sqlite diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/cache.sqlite b/airbyte-cdk/python/cache.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/cache_http_stream.sqlite b/airbyte-cdk/python/cache_http_stream.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..f87140a06997e3b308d1d94f6a40f48814b63e2c GIT binary patch literal 53248 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 F{|#JcQP= zCg{PW$NC3(F!4X&rZ-O>Ie7FPj3p4^q8H%%Chgv~@0<5|K2LgRyBE)w+nlt9>us4_ z%S$&US(YAZnj}ez*oMS*++w2BJ9pgVM?prce*Yn8Q{wpMwxT+;@p zwdqaT)t;?BUa73EYfH8DS*>f@0o~6jiSgQ$EVUg*JN~vUo~P?(z}>^+`e1%NH|P$n z$R{H3JFerCh@jtzor<7;`s@f|=SR?=-;1E%jSI|?9%xc*u^T_7R9EcKAOHafKmY;| zfB*y_009VGc!9lSOwm8SnC8|;k3h} zaMbe126ucO{lDMsQN4Hok)`1>vwq+X4CfaHz83vRx6; z6W1ZJPK!)No_~00^rcUpUTOA14sUmMdCPV5{#-v}q>WPAh(fhuS=8ZrZ4gef`KH~O z)fhEwkzEufjz)<1W->D(>#FNG;*q%RI^tlHsH2;9yGv0JCbmc{!oG@3yjnt009U<00Izz00bZa0SG_<0z%*qdoPfM literal 0 HcmV?d00001 diff --git a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java index f4311322bca4..7fe74bf66296 100644 --- a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java +++ b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java @@ -125,9 +125,6 @@ public abstract class AbstractSourceConnectorTest { private ConnectorConfigUpdater mConnectorConfigUpdater; // This has to be using the protocol version of the platform in order to capture the arg - private final ArgumentCaptor lastPersistedCatalog = - ArgumentCaptor.forClass(io.airbyte.protocol.models.AirbyteCatalog.class); - protected AirbyteCatalog getLastPersistedCatalog() { return convertProtocolObject(discoverWriteRequest.getValue().getCatalog(), AirbyteCatalog.class); } From 274d481ee4462548607a6cb20ff639d9a9cadc02 Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 8 Feb 2023 14:06:00 -0800 Subject: [PATCH 3/9] add converter into test --- airbyte-integrations/bases/standard-source-test/build.gradle | 1 + .../standardtest/source/AbstractSourceConnectorTest.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/airbyte-integrations/bases/standard-source-test/build.gradle b/airbyte-integrations/bases/standard-source-test/build.gradle index 2ea4836076fc..bb5d1070c287 100644 --- a/airbyte-integrations/bases/standard-source-test/build.gradle +++ b/airbyte-integrations/bases/standard-source-test/build.gradle @@ -15,6 +15,7 @@ dependencies { implementation project(':airbyte-db:db-lib') implementation project(':airbyte-api') implementation project(':airbyte-commons-worker') + implementation project(':airbyte-commons-server') implementation project(':airbyte-config:config-models') implementation project(':airbyte-config:config-persistence') implementation project(':airbyte-protocol:protocol-models') diff --git a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java index dfedef268d43..0dc05c626b95 100644 --- a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java +++ b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java @@ -18,6 +18,7 @@ import io.airbyte.api.client.model.generated.SourceDiscoverSchemaWriteRequestBody; import io.airbyte.commons.features.EnvVariableFeatureFlags; import io.airbyte.commons.json.Jsons; +import io.airbyte.commons.server.handlers.helpers.CatalogConverter; import io.airbyte.config.EnvConfigs; import io.airbyte.config.JobGetSpecConfig; import io.airbyte.config.ResourceRequirements; @@ -126,7 +127,8 @@ public abstract class AbstractSourceConnectorTest { // This has to be using the protocol version of the platform in order to capture the arg protected AirbyteCatalog getLastPersistedCatalog() { - return convertProtocolObject(discoverWriteRequest.getValue().getCatalog(), AirbyteCatalog.class); + return convertProtocolObject( + CatalogConverter.toProtocol(discoverWriteRequest.getValue().getCatalog()), AirbyteCatalog.class); } private final ArgumentCaptor discoverWriteRequest = From 4741924da4ef55afefb06096ef9423d6b3ade692 Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 8 Feb 2023 14:19:12 -0800 Subject: [PATCH 4/9] use converters to convert client catalog to proto --- .../models/declarative_component_schema.py | 278 +++++++++--------- .../helper/CatalogClientConverters.java | 91 ++++++ .../helper/CatalogClientConvertersTest.java | 6 + .../bases/standard-source-test/build.gradle | 1 - .../source/AbstractSourceConnectorTest.java | 4 +- 5 files changed, 242 insertions(+), 138 deletions(-) diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py index 9c45047bddab..141c74b6a3a7 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py @@ -1,7 +1,3 @@ -# -# Copyright (c) 2023 Airbyte, Inc., all rights reserved. -# - # generated by datamodel-codegen: # filename: declarative_component_schema.yaml @@ -15,280 +11,284 @@ class AddedFieldDefinition(BaseModel): - type: Literal["AddedFieldDefinition"] + type: Literal['AddedFieldDefinition'] path: List[str] value: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class AddFields(BaseModel): - type: Literal["AddFields"] + type: Literal['AddFields'] fields: List[AddedFieldDefinition] - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class ApiKeyAuthenticator(BaseModel): - type: Literal["ApiKeyAuthenticator"] + type: Literal['ApiKeyAuthenticator'] api_token: str header: Optional[str] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class BasicHttpAuthenticator(BaseModel): - type: Literal["BasicHttpAuthenticator"] + type: Literal['BasicHttpAuthenticator'] username: str = Field( ..., - description="The username that will be combined with the password, base64 encoded and used to make requests", + description='The username that will be combined with the password, base64 encoded and used to make requests', ) password: Optional[str] = Field( - "", - description="The password that will be combined with the username, base64 encoded and used to make requests", + '', + description='The password that will be combined with the username, base64 encoded and used to make requests', ) - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class BearerAuthenticator(BaseModel): - type: Literal["BearerAuthenticator"] + type: Literal['BearerAuthenticator'] api_token: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CheckStream(BaseModel): - type: Literal["CheckStream"] + type: Literal['CheckStream'] stream_names: List[str] class ConstantBackoffStrategy(BaseModel): - type: Literal["ConstantBackoffStrategy"] + type: Literal['ConstantBackoffStrategy'] backoff_time_in_seconds: Union[float, str] - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomAuthenticator(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomAuthenticator"] + type: Literal['CustomAuthenticator'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomBackoffStrategy(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomBackoffStrategy"] + type: Literal['CustomBackoffStrategy'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomErrorHandler(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomErrorHandler"] + type: Literal['CustomErrorHandler'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomPaginationStrategy(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomPaginationStrategy"] + type: Literal['CustomPaginationStrategy'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomRecordExtractor(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomRecordExtractor"] + type: Literal['CustomRecordExtractor'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomRequester(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomRequester"] + type: Literal['CustomRequester'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomRequestOptionsProvider(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomRequestOptionsProvider"] + type: Literal['CustomRequestOptionsProvider'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomRetriever(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomRetriever"] + type: Literal['CustomRetriever'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomStreamSlicer(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomStreamSlicer"] + type: Literal['CustomStreamSlicer'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CustomTransformation(BaseModel): class Config: extra = Extra.allow - type: Literal["CustomTransformation"] + type: Literal['CustomTransformation'] class_name: str - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class OAuthAuthenticator(BaseModel): - type: Literal["OAuthAuthenticator"] + type: Literal['OAuthAuthenticator'] client_id: str client_secret: str refresh_token: str token_refresh_endpoint: str - access_token_name: Optional[str] = "access_token" - expires_in_name: Optional[str] = "expires_in" - grant_type: Optional[str] = "refresh_token" + access_token_name: Optional[str] = 'access_token' + expires_in_name: Optional[str] = 'expires_in' + grant_type: Optional[str] = 'refresh_token' refresh_request_body: Optional[Dict[str, Any]] = None scopes: Optional[List[str]] = None token_expiry_date: Optional[str] = None token_expiry_date_format: Optional[str] = Field( None, - description="The format of the datetime; provide it if expires_in is returned in datetime instead of seconds", + description='The format of the datetime; provide it if expires_in is returned in datetime instead of seconds', ) - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class ExponentialBackoffStrategy(BaseModel): - type: Literal["ExponentialBackoffStrategy"] + type: Literal['ExponentialBackoffStrategy'] factor: Optional[Union[float, str]] = 5 - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class HttpMethodEnum(Enum): - GET = "GET" - POST = "POST" + GET = 'GET' + POST = 'POST' class Action(Enum): - SUCCESS = "SUCCESS" - FAIL = "FAIL" - RETRY = "RETRY" - IGNORE = "IGNORE" + SUCCESS = 'SUCCESS' + FAIL = 'FAIL' + RETRY = 'RETRY' + IGNORE = 'IGNORE' class HttpResponseFilter(BaseModel): - type: Literal["HttpResponseFilter"] + type: Literal['HttpResponseFilter'] action: Action error_message: Optional[str] = None error_message_contains: Optional[str] = None http_codes: Optional[List[int]] = None predicate: Optional[str] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class InlineSchemaLoader(BaseModel): - type: Literal["InlineSchemaLoader"] - schema_: Optional[Dict[str, Any]] = Field(None, alias="schema") + type: Literal['InlineSchemaLoader'] + schema_: Optional[Dict[str, Any]] = Field(None, alias='schema') class InterpolatedRequestOptionsProvider(BaseModel): - type: Literal["InterpolatedRequestOptionsProvider"] + type: Literal['InterpolatedRequestOptionsProvider'] request_body_data: Optional[Union[str, Dict[str, str]]] = None request_body_json: Optional[Union[str, Dict[str, str]]] = None request_headers: Optional[Union[str, Dict[str, str]]] = None request_parameters: Optional[Union[str, Dict[str, str]]] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class Type(Enum): - JsonFileSchemaLoader = "JsonFileSchemaLoader" - JsonSchema = "JsonSchema" + JsonFileSchemaLoader = 'JsonFileSchemaLoader' + JsonSchema = 'JsonSchema' class JsonFileSchemaLoader(BaseModel): type: Type file_path: Optional[str] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class JsonDecoder(BaseModel): - type: Literal["JsonDecoder"] + type: Literal['JsonDecoder'] class MinMaxDatetime(BaseModel): - type: Literal["MinMaxDatetime"] + type: Literal['MinMaxDatetime'] datetime: str - datetime_format: Optional[str] = "" + datetime_format: Optional[str] = '' max_datetime: Optional[str] = None min_datetime: Optional[str] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class NoAuth(BaseModel): - type: Literal["NoAuth"] - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + type: Literal['NoAuth'] + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class NoPagination(BaseModel): - type: Literal["NoPagination"] + type: Literal['NoPagination'] class OffsetIncrement(BaseModel): - type: Literal["OffsetIncrement"] - page_size: Union[int, str] = Field(..., description="The number of records to request") - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + type: Literal['OffsetIncrement'] + page_size: Union[int, str] = Field( + ..., description='The number of records to request' + ) + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class PageIncrement(BaseModel): - type: Literal["PageIncrement"] - page_size: int = Field(..., description="The number of records to request") + type: Literal['PageIncrement'] + page_size: int = Field(..., description='The number of records to request') start_from_page: Optional[int] = 0 - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class PrimaryKey(BaseModel): - __root__: Union[str, List[str], List[List[str]]] = Field(..., description="The stream field to be used to distinguish unique rows") + __root__: Union[str, List[str], List[List[str]]] = Field( + ..., description='The stream field to be used to distinguish unique rows' + ) class RecordFilter(BaseModel): - type: Literal["RecordFilter"] + type: Literal['RecordFilter'] condition: Optional[str] = Field( - "", - description="The predicate to filter a record. Records will be removed if evaluated to False", + '', + description='The predicate to filter a record. Records will be removed if evaluated to False', ) - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class RemoveFields(BaseModel): - type: Literal["RemoveFields"] + type: Literal['RemoveFields'] field_pointers: List[List[str]] class InjectInto(Enum): - request_parameter = "request_parameter" - header = "header" - path = "path" - body_data = "body_data" - body_json = "body_json" + request_parameter = 'request_parameter' + header = 'header' + path = 'path' + body_data = 'body_data' + body_json = 'body_json' class RequestOption(BaseModel): - type: Literal["RequestOption"] + type: Literal['RequestOption'] inject_into: InjectInto field_name: Optional[str] = None @@ -301,7 +301,7 @@ class Config: class SessionTokenAuthenticator(BaseModel): - type: Literal["SessionTokenAuthenticator"] + type: Literal['SessionTokenAuthenticator'] api_url: str header: str login_url: str @@ -309,47 +309,47 @@ class SessionTokenAuthenticator(BaseModel): session_token_response_key: str username: str validate_session_url: str - password: Optional[str] = "" - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + password: Optional[str] = '' + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class SingleSlice(BaseModel): - type: Literal["SingleSlice"] - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + type: Literal['SingleSlice'] + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class Spec(BaseModel): - type: Literal["Spec"] + type: Literal['Spec'] connection_specification: Dict[str, Any] documentation_url: Optional[str] = None class WaitTimeFromHeader(BaseModel): - type: Literal["WaitTimeFromHeader"] + type: Literal['WaitTimeFromHeader'] header: str regex: Optional[str] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class WaitUntilTimeFromHeader(BaseModel): - type: Literal["WaitUntilTimeFromHeader"] + type: Literal['WaitUntilTimeFromHeader'] header: str min_wait: Optional[Union[float, str]] = None regex: Optional[str] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CursorPagination(BaseModel): - type: Literal["CursorPagination"] + type: Literal['CursorPagination'] cursor_value: str page_size: Optional[int] = None stop_condition: Optional[str] = None decoder: Optional[JsonDecoder] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class DatetimeStreamSlicer(BaseModel): - type: Literal["DatetimeStreamSlicer"] + type: Literal['DatetimeStreamSlicer'] cursor_field: str datetime_format: str cursor_granularity: str @@ -361,11 +361,11 @@ class DatetimeStreamSlicer(BaseModel): start_time_option: Optional[RequestOption] = None stream_state_field_end: Optional[str] = None stream_state_field_start: Optional[str] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class DefaultErrorHandler(BaseModel): - type: Literal["DefaultErrorHandler"] + type: Literal['DefaultErrorHandler'] backoff_strategies: Optional[ List[ Union[ @@ -379,49 +379,51 @@ class DefaultErrorHandler(BaseModel): ] = None max_retries: Optional[int] = 5 response_filters: Optional[List[HttpResponseFilter]] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class DefaultPaginator(BaseModel): - type: Literal["DefaultPaginator"] - pagination_strategy: Union[CursorPagination, CustomPaginationStrategy, OffsetIncrement, PageIncrement] + type: Literal['DefaultPaginator'] + pagination_strategy: Union[ + CursorPagination, CustomPaginationStrategy, OffsetIncrement, PageIncrement + ] url_base: str decoder: Optional[JsonDecoder] = None page_size_option: Optional[RequestOption] = None page_token_option: Optional[RequestOption] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class DpathExtractor(BaseModel): - type: Literal["DpathExtractor"] + type: Literal['DpathExtractor'] field_pointer: List[str] decoder: Optional[JsonDecoder] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class ListStreamSlicer(BaseModel): - type: Literal["ListStreamSlicer"] + type: Literal['ListStreamSlicer'] cursor_field: str slice_values: Union[str, List[str]] request_option: Optional[RequestOption] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class RecordSelector(BaseModel): - type: Literal["RecordSelector"] + type: Literal['RecordSelector'] extractor: Union[CustomRecordExtractor, DpathExtractor] record_filter: Optional[RecordFilter] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class CompositeErrorHandler(BaseModel): - type: Literal["CompositeErrorHandler"] + type: Literal['CompositeErrorHandler'] error_handlers: List[Union[CompositeErrorHandler, DefaultErrorHandler]] - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class HttpRequester(BaseModel): - type: Literal["HttpRequester"] + type: Literal['HttpRequester'] name: str path: str url_base: str @@ -436,17 +438,21 @@ class HttpRequester(BaseModel): SessionTokenAuthenticator, ] ] = None - error_handler: Optional[Union[DefaultErrorHandler, CustomErrorHandler, CompositeErrorHandler]] = None - http_method: Optional[Union[str, HttpMethodEnum]] = "GET" - request_options_provider: Optional[Union[CustomRequestOptionsProvider, InterpolatedRequestOptionsProvider]] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + error_handler: Optional[ + Union[DefaultErrorHandler, CustomErrorHandler, CompositeErrorHandler] + ] = None + http_method: Optional[Union[str, HttpMethodEnum]] = 'GET' + request_options_provider: Optional[ + Union[CustomRequestOptionsProvider, InterpolatedRequestOptionsProvider] + ] = None + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class DeclarativeSource(BaseModel): class Config: extra = Extra.forbid - type: Literal["DeclarativeSource"] + type: Literal['DeclarativeSource'] check: CheckStream streams: List[DeclarativeStream] version: str @@ -456,7 +462,7 @@ class Config: class CartesianProductStreamSlicer(BaseModel): - type: Literal["CartesianProductStreamSlicer"] + type: Literal['CartesianProductStreamSlicer'] stream_slicers: List[ Union[ CustomStreamSlicer, @@ -466,38 +472,40 @@ class CartesianProductStreamSlicer(BaseModel): SubstreamSlicer, ] ] - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class DeclarativeStream(BaseModel): class Config: extra = Extra.allow - type: Literal["DeclarativeStream"] + type: Literal['DeclarativeStream'] retriever: Union[CustomRetriever, SimpleRetriever] checkpoint_interval: Optional[int] = None - name: Optional[str] = "" - primary_key: Optional[Union[str, List[str], List[List[str]]]] = "" + name: Optional[str] = '' + primary_key: Optional[Union[str, List[str], List[List[str]]]] = '' schema_loader: Optional[Union[InlineSchemaLoader, JsonFileSchemaLoader]] = None stream_cursor_field: Optional[Union[str, List[str]]] = None - transformations: Optional[List[Union[AddFields, CustomTransformation, RemoveFields]]] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + transformations: Optional[ + List[Union[AddFields, CustomTransformation, RemoveFields]] + ] = None + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class ParentStreamConfig(BaseModel): - type: Literal["ParentStreamConfig"] + type: Literal['ParentStreamConfig'] parent_key: str stream: DeclarativeStream stream_slice_field: str request_option: Optional[RequestOption] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class SimpleRetriever(BaseModel): - type: Literal["SimpleRetriever"] + type: Literal['SimpleRetriever'] record_selector: RecordSelector requester: Union[CustomRequester, HttpRequester] - name: Optional[str] = "" + name: Optional[str] = '' paginator: Optional[Union[DefaultPaginator, NoPagination]] = None primary_key: Optional[PrimaryKey] = None stream_slicer: Optional[ @@ -510,13 +518,13 @@ class SimpleRetriever(BaseModel): SubstreamSlicer, ] ] = None - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') class SubstreamSlicer(BaseModel): - type: Literal["SubstreamSlicer"] + type: Literal['SubstreamSlicer'] parent_stream_configs: List[ParentStreamConfig] - options: Optional[Dict[str, Any]] = Field(None, alias="$options") + _options: Optional[Dict[str, Any]] = Field(None, alias='$options') CompositeErrorHandler.update_forward_refs() diff --git a/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java b/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java index c5f4b48be001..9e301cd0d645 100644 --- a/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java +++ b/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java @@ -4,9 +4,20 @@ package io.airbyte.workers.helper; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.ObjectNode; +import io.airbyte.api.client.model.generated.AirbyteStreamConfiguration; +import io.airbyte.api.client.model.generated.DestinationSyncMode; +import io.airbyte.api.client.model.generated.SyncMode; import io.airbyte.commons.enums.Enums; import io.airbyte.commons.text.Names; import io.airbyte.protocol.models.AirbyteStream; +import io.airbyte.validation.json.JsonValidationException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; /** @@ -17,6 +28,86 @@ */ public class CatalogClientConverters { + /** + * + * @param catalog + * @return + */ + public static io.airbyte.protocol.models.AirbyteCatalog toAirbyteProtocol( + final io.airbyte.api.client.model.generated.AirbyteCatalog catalog) { + + io.airbyte.protocol.models.AirbyteCatalog protoCatalog = + new io.airbyte.protocol.models.AirbyteCatalog(); + var airbyteStream = catalog.getStreams().stream().map(stream -> { + try { + return toConfiguredProtocol(stream.getStream(), stream.getConfig()); + } catch (JsonValidationException e) { + return null; + } + }).collect(Collectors.toList()); + + protoCatalog.withStreams(airbyteStream); + return protoCatalog; + } + + + @SuppressWarnings("PMD.AvoidLiteralsInIfCondition") + private static io.airbyte.protocol.models.AirbyteStream toConfiguredProtocol(final io.airbyte.api.client.model.generated.AirbyteStream stream, AirbyteStreamConfiguration config) + throws JsonValidationException { + if (config.getFieldSelectionEnabled() != null && config.getFieldSelectionEnabled()) { + // Validate the selected field paths. + if (config.getSelectedFields() == null) { + throw new JsonValidationException("Requested field selection but no selected fields provided"); + } + final JsonNode properties = stream.getJsonSchema().findValue("properties"); + if (properties == null || !properties.isObject()) { + throw new JsonValidationException("Requested field selection but no properties node found"); + } + for (final var selectedFieldInfo : config.getSelectedFields()) { + if (selectedFieldInfo.getFieldPath() == null || selectedFieldInfo.getFieldPath().isEmpty()) { + throw new JsonValidationException("Selected field path cannot be empty"); + } + if (selectedFieldInfo.getFieldPath().size() > 1) { + // TODO(mfsiega-airbyte): support nested fields. + throw new UnsupportedOperationException("Nested field selection not supported"); + } + } + // Only include the selected fields. + // NOTE: we verified above that each selected field has at least one element in the field path. + final Set selectedFieldNames = + config.getSelectedFields().stream().map((field) -> field.getFieldPath().get(0)).collect(Collectors.toSet()); + // TODO(mfsiega-airbyte): we only check the top level of the cursor/primary key fields because we + // don't support filtering nested fields yet. + if (config.getSyncMode().equals(SyncMode.INCREMENTAL) // INCREMENTAL sync mode, AND + && !config.getCursorField().isEmpty() // There is a cursor configured, AND + && !selectedFieldNames.contains(config.getCursorField().get(0))) { // The cursor isn't in the selected fields. + throw new JsonValidationException("Cursor field cannot be de-selected in INCREMENTAL syncs"); + } + if (config.getDestinationSyncMode().equals(DestinationSyncMode.APPEND_DEDUP)) { + for (final List primaryKeyComponent : config.getPrimaryKey()) { + if (!selectedFieldNames.contains(primaryKeyComponent.get(0))) { + throw new JsonValidationException("Primary key field cannot be de-selected in DEDUP mode"); + } + } + } + for (final String selectedFieldName : selectedFieldNames) { + if (!properties.has(selectedFieldName)) { + throw new JsonValidationException(String.format("Requested selected field %s not found in JSON schema", selectedFieldName)); + } + } + ((ObjectNode) properties).retain(selectedFieldNames); + } + return new io.airbyte.protocol.models.AirbyteStream() + .withName(stream.getName()) + .withJsonSchema(stream.getJsonSchema()) + .withSupportedSyncModes(Enums.convertListTo(stream.getSupportedSyncModes(), io.airbyte.protocol.models.SyncMode.class)) + .withSourceDefinedCursor(stream.getSourceDefinedCursor()) + .withDefaultCursorField(stream.getDefaultCursorField()) + .withSourceDefinedPrimaryKey( + Optional.ofNullable(stream.getSourceDefinedPrimaryKey()).orElse(Collections.emptyList())) + .withNamespace(stream.getNamespace()); + } + /** * Converts a protocol AirbyteCatalog to an OpenAPI client versioned AirbyteCatalog. */ diff --git a/airbyte-commons-worker/src/test/java/io/airbyte/workers/helper/CatalogClientConvertersTest.java b/airbyte-commons-worker/src/test/java/io/airbyte/workers/helper/CatalogClientConvertersTest.java index ae2c4ae22c99..b2a009c5e643 100644 --- a/airbyte-commons-worker/src/test/java/io/airbyte/workers/helper/CatalogClientConvertersTest.java +++ b/airbyte-commons-worker/src/test/java/io/airbyte/workers/helper/CatalogClientConvertersTest.java @@ -65,4 +65,10 @@ void testConvertToClientAPI() { CatalogClientConverters.toAirbyteCatalogClientApi(BASIC_MODEL_CATALOG)); } + @Test + void testConvertToProtocol() { + assertEquals(BASIC_MODEL_CATALOG, + CatalogClientConverters.toAirbyteProtocol(EXPECTED_CLIENT_CATALOG)); + } + } diff --git a/airbyte-integrations/bases/standard-source-test/build.gradle b/airbyte-integrations/bases/standard-source-test/build.gradle index bb5d1070c287..2ea4836076fc 100644 --- a/airbyte-integrations/bases/standard-source-test/build.gradle +++ b/airbyte-integrations/bases/standard-source-test/build.gradle @@ -15,7 +15,6 @@ dependencies { implementation project(':airbyte-db:db-lib') implementation project(':airbyte-api') implementation project(':airbyte-commons-worker') - implementation project(':airbyte-commons-server') implementation project(':airbyte-config:config-models') implementation project(':airbyte-config:config-persistence') implementation project(':airbyte-protocol:protocol-models') diff --git a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java index 0dc05c626b95..433e7fb5b57a 100644 --- a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java +++ b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java @@ -18,7 +18,6 @@ import io.airbyte.api.client.model.generated.SourceDiscoverSchemaWriteRequestBody; import io.airbyte.commons.features.EnvVariableFeatureFlags; import io.airbyte.commons.json.Jsons; -import io.airbyte.commons.server.handlers.helpers.CatalogConverter; import io.airbyte.config.EnvConfigs; import io.airbyte.config.JobGetSpecConfig; import io.airbyte.config.ResourceRequirements; @@ -38,6 +37,7 @@ import io.airbyte.workers.general.DefaultCheckConnectionWorker; import io.airbyte.workers.general.DefaultDiscoverCatalogWorker; import io.airbyte.workers.general.DefaultGetSpecWorker; +import io.airbyte.workers.helper.CatalogClientConverters; import io.airbyte.workers.helper.ConnectorConfigUpdater; import io.airbyte.workers.helper.EntrypointEnvChecker; import io.airbyte.workers.internal.AirbyteSource; @@ -128,7 +128,7 @@ public abstract class AbstractSourceConnectorTest { // This has to be using the protocol version of the platform in order to capture the arg protected AirbyteCatalog getLastPersistedCatalog() { return convertProtocolObject( - CatalogConverter.toProtocol(discoverWriteRequest.getValue().getCatalog()), AirbyteCatalog.class); + CatalogClientConverters.toAirbyteProtocol(discoverWriteRequest.getValue().getCatalog()), AirbyteCatalog.class); } private final ArgumentCaptor discoverWriteRequest = From 1a8289b27caaeacfbe4bd43800f0f4513a7cf693 Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 8 Feb 2023 15:15:51 -0800 Subject: [PATCH 5/9] remove cdk related changes --- ...ame='mock.cache_filename' id='4615088160'> | Bin 0 -> 20480 bytes ...ame='mock.cache_filename' id='4615209936'> | Bin 0 -> 20480 bytes ...ame='mock.cache_filename' id='4615564352'> | Bin 0 -> 20480 bytes .../models/declarative_component_schema.py | 278 +++++++++--------- 4 files changed, 135 insertions(+), 143 deletions(-) create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/ create mode 100644 airbyte-cdk/python/ diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ new file mode 100644 index 0000000000000000000000000000000000000000..c740c083a618f355ec7672d49662ad2c46685a92 GIT binary patch literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP literal 0 HcmV?d00001 diff --git a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py index 141c74b6a3a7..9c45047bddab 100644 --- a/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py +++ b/airbyte-cdk/python/airbyte_cdk/sources/declarative/models/declarative_component_schema.py @@ -1,3 +1,7 @@ +# +# Copyright (c) 2023 Airbyte, Inc., all rights reserved. +# + # generated by datamodel-codegen: # filename: declarative_component_schema.yaml @@ -11,284 +15,280 @@ class AddedFieldDefinition(BaseModel): - type: Literal['AddedFieldDefinition'] + type: Literal["AddedFieldDefinition"] path: List[str] value: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class AddFields(BaseModel): - type: Literal['AddFields'] + type: Literal["AddFields"] fields: List[AddedFieldDefinition] - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class ApiKeyAuthenticator(BaseModel): - type: Literal['ApiKeyAuthenticator'] + type: Literal["ApiKeyAuthenticator"] api_token: str header: Optional[str] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class BasicHttpAuthenticator(BaseModel): - type: Literal['BasicHttpAuthenticator'] + type: Literal["BasicHttpAuthenticator"] username: str = Field( ..., - description='The username that will be combined with the password, base64 encoded and used to make requests', + description="The username that will be combined with the password, base64 encoded and used to make requests", ) password: Optional[str] = Field( - '', - description='The password that will be combined with the username, base64 encoded and used to make requests', + "", + description="The password that will be combined with the username, base64 encoded and used to make requests", ) - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class BearerAuthenticator(BaseModel): - type: Literal['BearerAuthenticator'] + type: Literal["BearerAuthenticator"] api_token: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CheckStream(BaseModel): - type: Literal['CheckStream'] + type: Literal["CheckStream"] stream_names: List[str] class ConstantBackoffStrategy(BaseModel): - type: Literal['ConstantBackoffStrategy'] + type: Literal["ConstantBackoffStrategy"] backoff_time_in_seconds: Union[float, str] - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomAuthenticator(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomAuthenticator'] + type: Literal["CustomAuthenticator"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomBackoffStrategy(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomBackoffStrategy'] + type: Literal["CustomBackoffStrategy"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomErrorHandler(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomErrorHandler'] + type: Literal["CustomErrorHandler"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomPaginationStrategy(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomPaginationStrategy'] + type: Literal["CustomPaginationStrategy"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomRecordExtractor(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomRecordExtractor'] + type: Literal["CustomRecordExtractor"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomRequester(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomRequester'] + type: Literal["CustomRequester"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomRequestOptionsProvider(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomRequestOptionsProvider'] + type: Literal["CustomRequestOptionsProvider"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomRetriever(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomRetriever'] + type: Literal["CustomRetriever"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomStreamSlicer(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomStreamSlicer'] + type: Literal["CustomStreamSlicer"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CustomTransformation(BaseModel): class Config: extra = Extra.allow - type: Literal['CustomTransformation'] + type: Literal["CustomTransformation"] class_name: str - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class OAuthAuthenticator(BaseModel): - type: Literal['OAuthAuthenticator'] + type: Literal["OAuthAuthenticator"] client_id: str client_secret: str refresh_token: str token_refresh_endpoint: str - access_token_name: Optional[str] = 'access_token' - expires_in_name: Optional[str] = 'expires_in' - grant_type: Optional[str] = 'refresh_token' + access_token_name: Optional[str] = "access_token" + expires_in_name: Optional[str] = "expires_in" + grant_type: Optional[str] = "refresh_token" refresh_request_body: Optional[Dict[str, Any]] = None scopes: Optional[List[str]] = None token_expiry_date: Optional[str] = None token_expiry_date_format: Optional[str] = Field( None, - description='The format of the datetime; provide it if expires_in is returned in datetime instead of seconds', + description="The format of the datetime; provide it if expires_in is returned in datetime instead of seconds", ) - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class ExponentialBackoffStrategy(BaseModel): - type: Literal['ExponentialBackoffStrategy'] + type: Literal["ExponentialBackoffStrategy"] factor: Optional[Union[float, str]] = 5 - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class HttpMethodEnum(Enum): - GET = 'GET' - POST = 'POST' + GET = "GET" + POST = "POST" class Action(Enum): - SUCCESS = 'SUCCESS' - FAIL = 'FAIL' - RETRY = 'RETRY' - IGNORE = 'IGNORE' + SUCCESS = "SUCCESS" + FAIL = "FAIL" + RETRY = "RETRY" + IGNORE = "IGNORE" class HttpResponseFilter(BaseModel): - type: Literal['HttpResponseFilter'] + type: Literal["HttpResponseFilter"] action: Action error_message: Optional[str] = None error_message_contains: Optional[str] = None http_codes: Optional[List[int]] = None predicate: Optional[str] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class InlineSchemaLoader(BaseModel): - type: Literal['InlineSchemaLoader'] - schema_: Optional[Dict[str, Any]] = Field(None, alias='schema') + type: Literal["InlineSchemaLoader"] + schema_: Optional[Dict[str, Any]] = Field(None, alias="schema") class InterpolatedRequestOptionsProvider(BaseModel): - type: Literal['InterpolatedRequestOptionsProvider'] + type: Literal["InterpolatedRequestOptionsProvider"] request_body_data: Optional[Union[str, Dict[str, str]]] = None request_body_json: Optional[Union[str, Dict[str, str]]] = None request_headers: Optional[Union[str, Dict[str, str]]] = None request_parameters: Optional[Union[str, Dict[str, str]]] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class Type(Enum): - JsonFileSchemaLoader = 'JsonFileSchemaLoader' - JsonSchema = 'JsonSchema' + JsonFileSchemaLoader = "JsonFileSchemaLoader" + JsonSchema = "JsonSchema" class JsonFileSchemaLoader(BaseModel): type: Type file_path: Optional[str] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class JsonDecoder(BaseModel): - type: Literal['JsonDecoder'] + type: Literal["JsonDecoder"] class MinMaxDatetime(BaseModel): - type: Literal['MinMaxDatetime'] + type: Literal["MinMaxDatetime"] datetime: str - datetime_format: Optional[str] = '' + datetime_format: Optional[str] = "" max_datetime: Optional[str] = None min_datetime: Optional[str] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class NoAuth(BaseModel): - type: Literal['NoAuth'] - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + type: Literal["NoAuth"] + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class NoPagination(BaseModel): - type: Literal['NoPagination'] + type: Literal["NoPagination"] class OffsetIncrement(BaseModel): - type: Literal['OffsetIncrement'] - page_size: Union[int, str] = Field( - ..., description='The number of records to request' - ) - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + type: Literal["OffsetIncrement"] + page_size: Union[int, str] = Field(..., description="The number of records to request") + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class PageIncrement(BaseModel): - type: Literal['PageIncrement'] - page_size: int = Field(..., description='The number of records to request') + type: Literal["PageIncrement"] + page_size: int = Field(..., description="The number of records to request") start_from_page: Optional[int] = 0 - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class PrimaryKey(BaseModel): - __root__: Union[str, List[str], List[List[str]]] = Field( - ..., description='The stream field to be used to distinguish unique rows' - ) + __root__: Union[str, List[str], List[List[str]]] = Field(..., description="The stream field to be used to distinguish unique rows") class RecordFilter(BaseModel): - type: Literal['RecordFilter'] + type: Literal["RecordFilter"] condition: Optional[str] = Field( - '', - description='The predicate to filter a record. Records will be removed if evaluated to False', + "", + description="The predicate to filter a record. Records will be removed if evaluated to False", ) - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class RemoveFields(BaseModel): - type: Literal['RemoveFields'] + type: Literal["RemoveFields"] field_pointers: List[List[str]] class InjectInto(Enum): - request_parameter = 'request_parameter' - header = 'header' - path = 'path' - body_data = 'body_data' - body_json = 'body_json' + request_parameter = "request_parameter" + header = "header" + path = "path" + body_data = "body_data" + body_json = "body_json" class RequestOption(BaseModel): - type: Literal['RequestOption'] + type: Literal["RequestOption"] inject_into: InjectInto field_name: Optional[str] = None @@ -301,7 +301,7 @@ class Config: class SessionTokenAuthenticator(BaseModel): - type: Literal['SessionTokenAuthenticator'] + type: Literal["SessionTokenAuthenticator"] api_url: str header: str login_url: str @@ -309,47 +309,47 @@ class SessionTokenAuthenticator(BaseModel): session_token_response_key: str username: str validate_session_url: str - password: Optional[str] = '' - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + password: Optional[str] = "" + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class SingleSlice(BaseModel): - type: Literal['SingleSlice'] - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + type: Literal["SingleSlice"] + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class Spec(BaseModel): - type: Literal['Spec'] + type: Literal["Spec"] connection_specification: Dict[str, Any] documentation_url: Optional[str] = None class WaitTimeFromHeader(BaseModel): - type: Literal['WaitTimeFromHeader'] + type: Literal["WaitTimeFromHeader"] header: str regex: Optional[str] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class WaitUntilTimeFromHeader(BaseModel): - type: Literal['WaitUntilTimeFromHeader'] + type: Literal["WaitUntilTimeFromHeader"] header: str min_wait: Optional[Union[float, str]] = None regex: Optional[str] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CursorPagination(BaseModel): - type: Literal['CursorPagination'] + type: Literal["CursorPagination"] cursor_value: str page_size: Optional[int] = None stop_condition: Optional[str] = None decoder: Optional[JsonDecoder] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class DatetimeStreamSlicer(BaseModel): - type: Literal['DatetimeStreamSlicer'] + type: Literal["DatetimeStreamSlicer"] cursor_field: str datetime_format: str cursor_granularity: str @@ -361,11 +361,11 @@ class DatetimeStreamSlicer(BaseModel): start_time_option: Optional[RequestOption] = None stream_state_field_end: Optional[str] = None stream_state_field_start: Optional[str] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class DefaultErrorHandler(BaseModel): - type: Literal['DefaultErrorHandler'] + type: Literal["DefaultErrorHandler"] backoff_strategies: Optional[ List[ Union[ @@ -379,51 +379,49 @@ class DefaultErrorHandler(BaseModel): ] = None max_retries: Optional[int] = 5 response_filters: Optional[List[HttpResponseFilter]] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class DefaultPaginator(BaseModel): - type: Literal['DefaultPaginator'] - pagination_strategy: Union[ - CursorPagination, CustomPaginationStrategy, OffsetIncrement, PageIncrement - ] + type: Literal["DefaultPaginator"] + pagination_strategy: Union[CursorPagination, CustomPaginationStrategy, OffsetIncrement, PageIncrement] url_base: str decoder: Optional[JsonDecoder] = None page_size_option: Optional[RequestOption] = None page_token_option: Optional[RequestOption] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class DpathExtractor(BaseModel): - type: Literal['DpathExtractor'] + type: Literal["DpathExtractor"] field_pointer: List[str] decoder: Optional[JsonDecoder] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class ListStreamSlicer(BaseModel): - type: Literal['ListStreamSlicer'] + type: Literal["ListStreamSlicer"] cursor_field: str slice_values: Union[str, List[str]] request_option: Optional[RequestOption] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class RecordSelector(BaseModel): - type: Literal['RecordSelector'] + type: Literal["RecordSelector"] extractor: Union[CustomRecordExtractor, DpathExtractor] record_filter: Optional[RecordFilter] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class CompositeErrorHandler(BaseModel): - type: Literal['CompositeErrorHandler'] + type: Literal["CompositeErrorHandler"] error_handlers: List[Union[CompositeErrorHandler, DefaultErrorHandler]] - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class HttpRequester(BaseModel): - type: Literal['HttpRequester'] + type: Literal["HttpRequester"] name: str path: str url_base: str @@ -438,21 +436,17 @@ class HttpRequester(BaseModel): SessionTokenAuthenticator, ] ] = None - error_handler: Optional[ - Union[DefaultErrorHandler, CustomErrorHandler, CompositeErrorHandler] - ] = None - http_method: Optional[Union[str, HttpMethodEnum]] = 'GET' - request_options_provider: Optional[ - Union[CustomRequestOptionsProvider, InterpolatedRequestOptionsProvider] - ] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + error_handler: Optional[Union[DefaultErrorHandler, CustomErrorHandler, CompositeErrorHandler]] = None + http_method: Optional[Union[str, HttpMethodEnum]] = "GET" + request_options_provider: Optional[Union[CustomRequestOptionsProvider, InterpolatedRequestOptionsProvider]] = None + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class DeclarativeSource(BaseModel): class Config: extra = Extra.forbid - type: Literal['DeclarativeSource'] + type: Literal["DeclarativeSource"] check: CheckStream streams: List[DeclarativeStream] version: str @@ -462,7 +456,7 @@ class Config: class CartesianProductStreamSlicer(BaseModel): - type: Literal['CartesianProductStreamSlicer'] + type: Literal["CartesianProductStreamSlicer"] stream_slicers: List[ Union[ CustomStreamSlicer, @@ -472,40 +466,38 @@ class CartesianProductStreamSlicer(BaseModel): SubstreamSlicer, ] ] - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class DeclarativeStream(BaseModel): class Config: extra = Extra.allow - type: Literal['DeclarativeStream'] + type: Literal["DeclarativeStream"] retriever: Union[CustomRetriever, SimpleRetriever] checkpoint_interval: Optional[int] = None - name: Optional[str] = '' - primary_key: Optional[Union[str, List[str], List[List[str]]]] = '' + name: Optional[str] = "" + primary_key: Optional[Union[str, List[str], List[List[str]]]] = "" schema_loader: Optional[Union[InlineSchemaLoader, JsonFileSchemaLoader]] = None stream_cursor_field: Optional[Union[str, List[str]]] = None - transformations: Optional[ - List[Union[AddFields, CustomTransformation, RemoveFields]] - ] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + transformations: Optional[List[Union[AddFields, CustomTransformation, RemoveFields]]] = None + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class ParentStreamConfig(BaseModel): - type: Literal['ParentStreamConfig'] + type: Literal["ParentStreamConfig"] parent_key: str stream: DeclarativeStream stream_slice_field: str request_option: Optional[RequestOption] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class SimpleRetriever(BaseModel): - type: Literal['SimpleRetriever'] + type: Literal["SimpleRetriever"] record_selector: RecordSelector requester: Union[CustomRequester, HttpRequester] - name: Optional[str] = '' + name: Optional[str] = "" paginator: Optional[Union[DefaultPaginator, NoPagination]] = None primary_key: Optional[PrimaryKey] = None stream_slicer: Optional[ @@ -518,13 +510,13 @@ class SimpleRetriever(BaseModel): SubstreamSlicer, ] ] = None - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") class SubstreamSlicer(BaseModel): - type: Literal['SubstreamSlicer'] + type: Literal["SubstreamSlicer"] parent_stream_configs: List[ParentStreamConfig] - _options: Optional[Dict[str, Any]] = Field(None, alias='$options') + options: Optional[Dict[str, Any]] = Field(None, alias="$options") CompositeErrorHandler.update_forward_refs() From 83a53c5628101ea9448d4a31956a2ac742bae236 Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 8 Feb 2023 15:19:24 -0800 Subject: [PATCH 6/9] more cdk remove --- ... name='mock.cache_filename' id='4615088160'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4615209936'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4615564352'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4722183184'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4722262416'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4722617024'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4760215360'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4776707456'> | Bin 20480 -> 0 bytes ... name='mock.cache_filename' id='4777559952'> | Bin 20480 -> 0 bytes airbyte-cdk/python/cache.sqlite | Bin 20480 -> 0 bytes airbyte-cdk/python/cache_http_stream.sqlite | Bin 53248 -> 0 bytes .../python/cache_http_stream_with_slices.sqlite | Bin 20480 -> 0 bytes 12 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/ delete mode 100644 airbyte-cdk/python/cache.sqlite delete mode 100644 airbyte-cdk/python/cache_http_stream.sqlite delete mode 100644 airbyte-cdk/python/cache_http_stream_with_slices.sqlite diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/ b/airbyte-cdk/python/ deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/cache.sqlite b/airbyte-cdk/python/cache.sqlite deleted file mode 100644 index c740c083a618f355ec7672d49662ad2c46685a92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20480 zcmeI%!Aiq07{Kwg>xKwhciXW!Du^(B0qf{NTtVwD!$YYqLRnq4?S?*}Z?uC)o6!{& z>d9022a2lzQV3y|wOiJG(S2**DZj?IxG6Nn z>HS&X{uI_=E9{N^G1%IZrpb&WfB*srAbRsLhSH2s}<+V3Ik((%4tK+fN8+nc);?+XE<*!M3 zpAMsSk?#6oy*?b*Vb?c)WRSn4t6Y^CRDt;`gKD@r1M}|;s`Wa9D(sY=2iml+o1tzf z2q1s}0tg_000IagfB*srAkbEUL%lKX|7|^9_Jsff2q1s}0tg_000IagfWS_G_kVr_ u1Q0*~0R#|0009ILKmY**+AqNSfBVmv9U_1L0tg_000IagfB*srAn*ksA7bnP diff --git a/airbyte-cdk/python/cache_http_stream.sqlite b/airbyte-cdk/python/cache_http_stream.sqlite deleted file mode 100644 index f87140a06997e3b308d1d94f6a40f48814b63e2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53248 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 F{|#JcQP= zCg{PW$NC3(F!4X&rZ-O>Ie7FPj3p4^q8H%%Chgv~@0<5|K2LgRyBE)w+nlt9>us4_ z%S$&US(YAZnj}ez*oMS*++w2BJ9pgVM?prce*Yn8Q{wpMwxT+;@p zwdqaT)t;?BUa73EYfH8DS*>f@0o~6jiSgQ$EVUg*JN~vUo~P?(z}>^+`e1%NH|P$n z$R{H3JFerCh@jtzor<7;`s@f|=SR?=-;1E%jSI|?9%xc*u^T_7R9EcKAOHafKmY;| zfB*y_009VGc!9lSOwm8SnC8|;k3h} zaMbe126ucO{lDMsQN4Hok)`1>vwq+X4CfaHz83vRx6; z6W1ZJPK!)No_~00^rcUpUTOA14sUmMdCPV5{#-v}q>WPAh(fhuS=8ZrZ4gef`KH~O z)fhEwkzEufjz)<1W->D(>#FNG;*q%RI^tlHsH2;9yGv0JCbmc{!oG@3yjnt009U<00Izz00bZa0SG_<0z%*qdoPfM From 2a42f492de05dd64ba81172d4f23eca7fd3a751a Mon Sep 17 00:00:00 2001 From: Sergio Ropero Date: Wed, 8 Feb 2023 16:03:03 -0800 Subject: [PATCH 7/9] Minor format changes --- .../airbyte/workers/helper/CatalogClientConverters.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java b/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java index 9e301cd0d645..fae560c2d041 100644 --- a/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java +++ b/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java @@ -13,7 +13,7 @@ import io.airbyte.commons.text.Names; import io.airbyte.protocol.models.AirbyteStream; import io.airbyte.validation.json.JsonValidationException; -import java.util.ArrayList; + import java.util.Collections; import java.util.List; import java.util.Optional; @@ -33,8 +33,7 @@ public class CatalogClientConverters { * @param catalog * @return */ - public static io.airbyte.protocol.models.AirbyteCatalog toAirbyteProtocol( - final io.airbyte.api.client.model.generated.AirbyteCatalog catalog) { + public static io.airbyte.protocol.models.AirbyteCatalog toAirbyteProtocol(final io.airbyte.api.client.model.generated.AirbyteCatalog catalog) { io.airbyte.protocol.models.AirbyteCatalog protoCatalog = new io.airbyte.protocol.models.AirbyteCatalog(); @@ -52,7 +51,8 @@ public static io.airbyte.protocol.models.AirbyteCatalog toAirbyteProtocol( @SuppressWarnings("PMD.AvoidLiteralsInIfCondition") - private static io.airbyte.protocol.models.AirbyteStream toConfiguredProtocol(final io.airbyte.api.client.model.generated.AirbyteStream stream, AirbyteStreamConfiguration config) + private static io.airbyte.protocol.models.AirbyteStream toConfiguredProtocol(final io.airbyte.api.client.model.generated.AirbyteStream stream, + AirbyteStreamConfiguration config) throws JsonValidationException { if (config.getFieldSelectionEnabled() != null && config.getFieldSelectionEnabled()) { // Validate the selected field paths. From 3688fd84b7afefe695161569c261d5aaeced051b Mon Sep 17 00:00:00 2001 From: Xiaohan Song Date: Wed, 8 Feb 2023 16:03:18 -0800 Subject: [PATCH 8/9] remove untrue comment --- .../standardtest/source/AbstractSourceConnectorTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java index 433e7fb5b57a..311ed1b20bae 100644 --- a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java +++ b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java @@ -124,8 +124,7 @@ public abstract class AbstractSourceConnectorTest { private SourceApi mSourceApi; private ConnectorConfigUpdater mConnectorConfigUpdater; - - // This has to be using the protocol version of the platform in order to capture the arg + protected AirbyteCatalog getLastPersistedCatalog() { return convertProtocolObject( CatalogClientConverters.toAirbyteProtocol(discoverWriteRequest.getValue().getCatalog()), AirbyteCatalog.class); From 2f17718807fc9132d4f620322da9ade1084a8d8b Mon Sep 17 00:00:00 2001 From: Sergio Ropero Date: Wed, 8 Feb 2023 16:13:24 -0800 Subject: [PATCH 9/9] Minor format changes --- .../java/io/airbyte/workers/helper/CatalogClientConverters.java | 2 -- .../standardtest/source/AbstractSourceConnectorTest.java | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java b/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java index fae560c2d041..52cf8c1c2db1 100644 --- a/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java +++ b/airbyte-commons-worker/src/main/java/io/airbyte/workers/helper/CatalogClientConverters.java @@ -13,7 +13,6 @@ import io.airbyte.commons.text.Names; import io.airbyte.protocol.models.AirbyteStream; import io.airbyte.validation.json.JsonValidationException; - import java.util.Collections; import java.util.List; import java.util.Optional; @@ -49,7 +48,6 @@ public static io.airbyte.protocol.models.AirbyteCatalog toAirbyteProtocol(final return protoCatalog; } - @SuppressWarnings("PMD.AvoidLiteralsInIfCondition") private static io.airbyte.protocol.models.AirbyteStream toConfiguredProtocol(final io.airbyte.api.client.model.generated.AirbyteStream stream, AirbyteStreamConfiguration config) diff --git a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java index 311ed1b20bae..e245ec5df6df 100644 --- a/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java +++ b/airbyte-integrations/bases/standard-source-test/src/main/java/io/airbyte/integrations/standardtest/source/AbstractSourceConnectorTest.java @@ -124,7 +124,7 @@ public abstract class AbstractSourceConnectorTest { private SourceApi mSourceApi; private ConnectorConfigUpdater mConnectorConfigUpdater; - + protected AirbyteCatalog getLastPersistedCatalog() { return convertProtocolObject( CatalogClientConverters.toAirbyteProtocol(discoverWriteRequest.getValue().getCatalog()), AirbyteCatalog.class);