From 99568f7183bcb0d0bf12bd63c681935c258686ae Mon Sep 17 00:00:00 2001 From: ykurochkin Date: Thu, 2 Dec 2021 15:17:07 +0200 Subject: [PATCH 1/2] Refactor Pokeapi Source to CDK --- .../connectors/source-pokeapi/.dockerignore | 2 +- .../connectors/source-pokeapi/Dockerfile | 13 +++--- .../connectors/source-pokeapi/README.md | 41 +++++++++++++++++-- .../source-pokeapi/acceptance-test-config.yml | 15 +++++++ .../source-pokeapi/acceptance-test-docker.sh | 16 ++++++++ .../connectors/source-pokeapi/build.gradle | 23 +---------- .../integration_tests/__init__.py | 3 ++ .../integration_tests/acceptance.py | 14 +++++++ .../config.json | 0 .../configured_catalog.json | 0 .../invalid_config.json | 0 .../connectors/source-pokeapi/main.py | 12 ++++++ .../connectors/source-pokeapi/main_dev.py | 37 ----------------- .../source-pokeapi/requirements.txt | 4 +- .../connectors/source-pokeapi/setup.py | 31 ++++---------- .../source-pokeapi/source_pokeapi/__init__.py | 26 ++---------- .../source_pokeapi/schemas/pokemon.json | 2 +- .../source-pokeapi/source_pokeapi/source.py | 4 +- .../source-pokeapi/unit_tests/unit_test.py | 27 ------------ 19 files changed, 121 insertions(+), 149 deletions(-) create mode 100644 airbyte-integrations/connectors/source-pokeapi/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-pokeapi/acceptance-test-docker.sh create mode 100644 airbyte-integrations/connectors/source-pokeapi/integration_tests/__init__.py create mode 100644 airbyte-integrations/connectors/source-pokeapi/integration_tests/acceptance.py rename airbyte-integrations/connectors/source-pokeapi/{sample_files => integration_tests}/config.json (100%) rename airbyte-integrations/connectors/source-pokeapi/{sample_files => integration_tests}/configured_catalog.json (100%) rename airbyte-integrations/connectors/source-pokeapi/{sample_files => integration_tests}/invalid_config.json (100%) create mode 100644 airbyte-integrations/connectors/source-pokeapi/main.py delete mode 100644 airbyte-integrations/connectors/source-pokeapi/main_dev.py diff --git a/airbyte-integrations/connectors/source-pokeapi/.dockerignore b/airbyte-integrations/connectors/source-pokeapi/.dockerignore index 04e7483747252..682a873759d35 100644 --- a/airbyte-integrations/connectors/source-pokeapi/.dockerignore +++ b/airbyte-integrations/connectors/source-pokeapi/.dockerignore @@ -1,6 +1,6 @@ * !Dockerfile -!Dockerfile.test +!main.py !source_pokeapi !setup.py !secrets diff --git a/airbyte-integrations/connectors/source-pokeapi/Dockerfile b/airbyte-integrations/connectors/source-pokeapi/Dockerfile index b14c3207eb0a4..8bc22b03be2c9 100644 --- a/airbyte-integrations/connectors/source-pokeapi/Dockerfile +++ b/airbyte-integrations/connectors/source-pokeapi/Dockerfile @@ -1,18 +1,17 @@ -FROM airbyte/integration-base-python:0.1.7 +FROM python:3.7-slim # Bash is installed for more convenient debugging. RUN apt-get update && apt-get install -y bash && rm -rf /var/lib/apt/lists/* -ENV CODE_PATH="source_pokeapi" -ENV AIRBYTE_IMPL_MODULE="source_pokeapi" -ENV AIRBYTE_IMPL_PATH="SourcePokeapi" WORKDIR /airbyte/integration_code -COPY $CODE_PATH ./$CODE_PATH +COPY source_pokeapi ./source_pokeapi +COPY main.py ./ COPY setup.py ./ RUN pip install . -ENV AIRBYTE_ENTRYPOINT "/airbyte/base.sh" +ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" +ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.1.1 +LABEL io.airbyte.version=0.1.3 LABEL io.airbyte.name=airbyte/source-pokeapi diff --git a/airbyte-integrations/connectors/source-pokeapi/README.md b/airbyte-integrations/connectors/source-pokeapi/README.md index ee9fdd9b1ae69..019e75ee44805 100644 --- a/airbyte-integrations/connectors/source-pokeapi/README.md +++ b/airbyte-integrations/connectors/source-pokeapi/README.md @@ -85,10 +85,45 @@ docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-pokeapi:dev discover - docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/sample_files:/sample_files airbyte/source-pokeapi:dev read --config /secrets/config.json --catalog /sample_files/configured_catalog.json ``` +## Testing +Make sure to familiarize yourself with [pytest test discovery](https://docs.pytest.org/en/latest/goodpractices.html#test-discovery) to know how your test files and methods should be named. +First install test dependencies into your virtual environment: +``` +pip install .[tests] +``` +### Unit Tests +To run unit tests locally, from the connector directory run: +``` +python -m pytest unit_tests +``` + ### Integration Tests -1. From the airbyte project root, run `./gradlew :airbyte-integrations:connectors:source-pokeapi:integrationTest` to run the standard integration test suite. -1. To run additional integration tests, place your integration tests in a new directory `integration_tests` and run them with `python -m pytest -s integration_tests`. - Make sure to familiarize yourself with [pytest test discovery](https://docs.pytest.org/en/latest/goodpractices.html#test-discovery) to know how your test files and methods should be named. +There are two types of integration tests: Acceptance Tests (Airbyte's test suite for all source connectors) and custom integration tests (which are specific to this connector). + +#### Custom Integration tests +Place custom tests inside `integration_tests/` folder, then, from the connector root, run +``` +python -m pytest integration_tests +``` +#### Acceptance Tests +Customize `acceptance-test-config.yml` file to configure tests. See [Source Acceptance Tests](https://docs.airbyte.io/connector-development/testing-connectors/source-acceptance-tests-reference) for more information. +If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py. +To run your integration tests with acceptance tests, from the connector root, run +``` +python -m pytest integration_tests -p integration_tests.acceptance +``` +To run your integration tests with docker + +### Using gradle to run tests +All commands should be run from airbyte project root. +To run unittest run: +``` +./gradlew :airbyte-integrations:connectors:source-pokeapi:unitTest +``` +To run acceptance and custom integration tests run: +``` +./gradlew :airbyte-integrations:connectors:source-pokeapi:IntegrationTest +``` ## Dependency Management All of your dependencies should go in `setup.py`, NOT `requirements.txt`. The requirements file is only used to connect internal Airbyte dependencies in the monorepo for local development. diff --git a/airbyte-integrations/connectors/source-pokeapi/acceptance-test-config.yml b/airbyte-integrations/connectors/source-pokeapi/acceptance-test-config.yml new file mode 100644 index 0000000000000..7cacf3a9388c3 --- /dev/null +++ b/airbyte-integrations/connectors/source-pokeapi/acceptance-test-config.yml @@ -0,0 +1,15 @@ +# See [Source Acceptance Tests](https://docs.airbyte.io/connector-development/testing-connectors/source-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-pokeapi:dev +tests: + connection: + - config_path: "integration_tests/config.json" + status: "succeed" + discovery: + - config_path: "integration_tests/config.json" + basic_read: + - config_path: "integration_tests/config.json" + configured_catalog_path: "integration_tests/configured_catalog.json" + full_refresh: + - config_path: "integration_tests/config.json" + configured_catalog_path: "integration_tests/configured_catalog.json" diff --git a/airbyte-integrations/connectors/source-pokeapi/acceptance-test-docker.sh b/airbyte-integrations/connectors/source-pokeapi/acceptance-test-docker.sh new file mode 100644 index 0000000000000..c51577d10690c --- /dev/null +++ b/airbyte-integrations/connectors/source-pokeapi/acceptance-test-docker.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh + +# Build latest connector image +docker build . -t $(cat acceptance-test-config.yml | grep "connector_image" | head -n 1 | cut -d: -f2-) + +# Pull latest acctest image +docker pull airbyte/source-acceptance-test:latest + +# Run +docker run --rm -it \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -v /tmp:/tmp \ + -v $(pwd):/test_input \ + airbyte/source-acceptance-test \ + --acceptance-test-config /test_input + diff --git a/airbyte-integrations/connectors/source-pokeapi/build.gradle b/airbyte-integrations/connectors/source-pokeapi/build.gradle index deb4e7047e29b..f936f5ff6e4c6 100644 --- a/airbyte-integrations/connectors/source-pokeapi/build.gradle +++ b/airbyte-integrations/connectors/source-pokeapi/build.gradle @@ -1,30 +1,9 @@ plugins { id 'airbyte-python' id 'airbyte-docker' - id 'airbyte-standard-source-test-file' + id 'airbyte-source-acceptance-test' } airbytePython { moduleDirectory 'source_pokeapi' } - -airbyteStandardSourceTestFile { - // For more information on standard source tests, see https://docs.airbyte.io/connector-development/testing-connectors - - // All these input paths must live inside this connector's directory (or subdirectories) - specPath = "source_pokeapi/spec.json" - - // configPath points to a config file which matches the spec.json supplied above. secrets/ is gitignored by default, so place your config file - // there (in case it contains any credentials) - configPath = "sample_files/config.json" - - // Note: If your source supports incremental syncing, then make sure that the catalog that is returned in the get_catalog method is configured - // for incremental syncing (e.g. include cursor fields, etc). - configuredCatalogPath = "sample_files/configured_catalog.json" -} - - -dependencies { - implementation files(project(':airbyte-integrations:bases:base-standard-source-test-file').airbyteDocker.outputs) - implementation files(project(':airbyte-integrations:bases:base-python').airbyteDocker.outputs) -} diff --git a/airbyte-integrations/connectors/source-pokeapi/integration_tests/__init__.py b/airbyte-integrations/connectors/source-pokeapi/integration_tests/__init__.py new file mode 100644 index 0000000000000..46b7376756ec6 --- /dev/null +++ b/airbyte-integrations/connectors/source-pokeapi/integration_tests/__init__.py @@ -0,0 +1,3 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# diff --git a/airbyte-integrations/connectors/source-pokeapi/integration_tests/acceptance.py b/airbyte-integrations/connectors/source-pokeapi/integration_tests/acceptance.py new file mode 100644 index 0000000000000..0347f2a0b143d --- /dev/null +++ b/airbyte-integrations/connectors/source-pokeapi/integration_tests/acceptance.py @@ -0,0 +1,14 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# + + +import pytest + +pytest_plugins = ("source_acceptance_test.plugin",) + + +@pytest.fixture(scope="session", autouse=True) +def connector_setup(): + """This fixture is a placeholder for external resources that acceptance test might require.""" + yield diff --git a/airbyte-integrations/connectors/source-pokeapi/sample_files/config.json b/airbyte-integrations/connectors/source-pokeapi/integration_tests/config.json similarity index 100% rename from airbyte-integrations/connectors/source-pokeapi/sample_files/config.json rename to airbyte-integrations/connectors/source-pokeapi/integration_tests/config.json diff --git a/airbyte-integrations/connectors/source-pokeapi/sample_files/configured_catalog.json b/airbyte-integrations/connectors/source-pokeapi/integration_tests/configured_catalog.json similarity index 100% rename from airbyte-integrations/connectors/source-pokeapi/sample_files/configured_catalog.json rename to airbyte-integrations/connectors/source-pokeapi/integration_tests/configured_catalog.json diff --git a/airbyte-integrations/connectors/source-pokeapi/sample_files/invalid_config.json b/airbyte-integrations/connectors/source-pokeapi/integration_tests/invalid_config.json similarity index 100% rename from airbyte-integrations/connectors/source-pokeapi/sample_files/invalid_config.json rename to airbyte-integrations/connectors/source-pokeapi/integration_tests/invalid_config.json diff --git a/airbyte-integrations/connectors/source-pokeapi/main.py b/airbyte-integrations/connectors/source-pokeapi/main.py new file mode 100644 index 0000000000000..5e0ee178713e3 --- /dev/null +++ b/airbyte-integrations/connectors/source-pokeapi/main.py @@ -0,0 +1,12 @@ +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# + +import sys + +from airbyte_cdk.entrypoint import launch +from source_pokeapi import SourcePokeapi + +if __name__ == "__main__": + source = SourcePokeapi() + launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-pokeapi/main_dev.py b/airbyte-integrations/connectors/source-pokeapi/main_dev.py deleted file mode 100644 index 3276da562ce00..0000000000000 --- a/airbyte-integrations/connectors/source-pokeapi/main_dev.py +++ /dev/null @@ -1,37 +0,0 @@ -# -# Copyright (c) 2021 Airbyte, Inc., all rights reserved. -# - - -""" -MIT License - -Copyright (c) 2020 Airbyte - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -""" - -import sys - -from base_python.entrypoint import launch -from source_pokeapi import SourcePokeapi - -if __name__ == "__main__": - source = SourcePokeapi() - launch(source, sys.argv[1:]) diff --git a/airbyte-integrations/connectors/source-pokeapi/requirements.txt b/airbyte-integrations/connectors/source-pokeapi/requirements.txt index dd447512e620a..0411042aa0911 100644 --- a/airbyte-integrations/connectors/source-pokeapi/requirements.txt +++ b/airbyte-integrations/connectors/source-pokeapi/requirements.txt @@ -1,4 +1,2 @@ -# This file is autogenerated -- only edit if you know what you are doing. Use setup.py for declaring dependencies. --e ../../bases/airbyte-protocol --e ../../bases/base-python +-e ../../bases/source-acceptance-test -e . diff --git a/airbyte-integrations/connectors/source-pokeapi/setup.py b/airbyte-integrations/connectors/source-pokeapi/setup.py index 12f110500f630..7ff6f072d6ed3 100644 --- a/airbyte-integrations/connectors/source-pokeapi/setup.py +++ b/airbyte-integrations/connectors/source-pokeapi/setup.py @@ -3,31 +3,11 @@ # -""" -MIT License - -Copyright (c) 2020 Airbyte - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +from setuptools import find_packages, setup -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -""" +MAIN_REQUIREMENTS = ["airbyte-cdk~=0.1"] -from setuptools import find_packages, setup +TEST_REQUIREMENTS = ["pytest~=6.1", "source-acceptance-test"] setup( name="source_pokeapi", @@ -35,6 +15,9 @@ author="Airbyte", author_email="contact@airbyte.io", packages=find_packages(), - install_requires=["airbyte-protocol", "base-python", "pytest==6.1.2"], + install_requires=MAIN_REQUIREMENTS, package_data={"": ["*.json", "schemas/*.json", "schemas/shared/*.json"]}, + extras_require={ + "tests": TEST_REQUIREMENTS, + }, ) diff --git a/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/__init__.py b/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/__init__.py index fccde64cd0e05..091b006498eaf 100644 --- a/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/__init__.py +++ b/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/__init__.py @@ -1,26 +1,6 @@ -""" -MIT License - -Copyright (c) 2020 Airbyte - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -""" +# +# Copyright (c) 2021 Airbyte, Inc., all rights reserved. +# from .source import SourcePokeapi diff --git a/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/schemas/pokemon.json b/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/schemas/pokemon.json index 978d311d0be1a..7c190d9cb6c46 100644 --- a/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/schemas/pokemon.json +++ b/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/schemas/pokemon.json @@ -117,7 +117,7 @@ } }, "rarity": { - "type": ["null", "string"] + "type": ["null", "integer"] } } } diff --git a/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/source.py b/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/source.py index a92602e2fcce3..db2ad475fa7a1 100644 --- a/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/source.py +++ b/airbyte-integrations/connectors/source-pokeapi/source_pokeapi/source.py @@ -6,7 +6,9 @@ from typing import Any, Iterable, List, Mapping, MutableMapping, Optional, Tuple import requests -from base_python import AbstractSource, HttpStream, Stream +from airbyte_cdk.sources import AbstractSource +from airbyte_cdk.sources.streams import Stream +from airbyte_cdk.sources.streams.http import HttpStream from . import pokemon_list diff --git a/airbyte-integrations/connectors/source-pokeapi/unit_tests/unit_test.py b/airbyte-integrations/connectors/source-pokeapi/unit_tests/unit_test.py index 6d6d83e3959d7..e1814314fc3b0 100644 --- a/airbyte-integrations/connectors/source-pokeapi/unit_tests/unit_test.py +++ b/airbyte-integrations/connectors/source-pokeapi/unit_tests/unit_test.py @@ -3,32 +3,5 @@ # -""" -MIT License - -Copyright (c) 2020 Airbyte - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -""" - -# format anchor - - def test_example_method(): assert True From e31ac2755c1b603e1a80d046281734ec3346f210 Mon Sep 17 00:00:00 2001 From: ykurochkin Date: Fri, 3 Dec 2021 15:52:49 +0200 Subject: [PATCH 2/2] bump version --- .../init/src/main/resources/seed/source_definitions.yaml | 2 +- airbyte-config/init/src/main/resources/seed/source_specs.yaml | 2 +- docs/integrations/sources/pokeapi.md | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/airbyte-config/init/src/main/resources/seed/source_definitions.yaml b/airbyte-config/init/src/main/resources/seed/source_definitions.yaml index 1e71ac9a86f51..fa644b978a155 100644 --- a/airbyte-config/init/src/main/resources/seed/source_definitions.yaml +++ b/airbyte-config/init/src/main/resources/seed/source_definitions.yaml @@ -491,7 +491,7 @@ - name: PokeAPI sourceDefinitionId: 6371b14b-bc68-4236-bfbd-468e8df8e968 dockerRepository: airbyte/source-pokeapi - dockerImageTag: 0.1.1 + dockerImageTag: 0.1.3 documentationUrl: https://docs.airbyte.io/integrations/sources/pokeapi icon: pokeapi.svg sourceType: api diff --git a/airbyte-config/init/src/main/resources/seed/source_specs.yaml b/airbyte-config/init/src/main/resources/seed/source_specs.yaml index a1131d949ff81..e3bb32acfcfba 100644 --- a/airbyte-config/init/src/main/resources/seed/source_specs.yaml +++ b/airbyte-config/init/src/main/resources/seed/source_specs.yaml @@ -4727,7 +4727,7 @@ supportsNormalization: false supportsDBT: false supported_destination_sync_modes: [] -- dockerImage: "airbyte/source-pokeapi:0.1.1" +- dockerImage: "airbyte/source-pokeapi:0.1.3" spec: documentationUrl: "https://docs.airbyte.io/integrations/sources/pokeapi" connectionSpecification: diff --git a/docs/integrations/sources/pokeapi.md b/docs/integrations/sources/pokeapi.md index 001e7111c31bc..cfbbbd5dcc559 100644 --- a/docs/integrations/sources/pokeapi.md +++ b/docs/integrations/sources/pokeapi.md @@ -36,6 +36,7 @@ The PokéAPI uses the same [JSONSchema](https://json-schema.org/understanding-js | Version | Date | Pull Request | Subject | | :--- | :--- | :--- | :--- | +| 0.1.3 | 2021-12-03 | [8432](https://github.com/airbytehq/airbyte/pull/8432) | Migrate from base_python to CDK, add SAT tests. | | 0.1.1 | 2020-06-29 | [1046](https://github.com/airbytehq/airbyte/pull/4410) | Fix runtime UI error from GitHub store path. | | 0.1.0 | 2020-05-04 | [1046](https://github.com/airbytehq/airbyte/pull/3149) | Add source for PokeAPI. |