$ SUB_BUILD=PLATFORM ./gradlew build Starting a Gradle Daemon (subsequent builds will be faster) Building Airbyte Sub Build: PLATFORM > Configure project : configuring docker task for airbyte-bootloader configuring docker task for airbyte-connector-builder-server configuring docker task for airbyte-container-orchestrator configuring docker task for airbyte-cron configuring docker task for airbyte-proxy configuring docker task for airbyte-server configuring docker task for airbyte-temporal configuring docker task for airbyte-webapp configuring docker task for airbyte-workers configuring docker task for init configuring docker task for db-lib configuring docker task for reporter > Task :airbyte-proxy:bashTest FAILED > Task :airbyte-connector-builder-server:airbytePythonDockerApply Obtaining file:///home Preparing metadata (setup.py): started Preparing metadata (setup.py): finished with status 'done' Collecting airbyte-cdk==0.25.0 Downloading airbyte_cdk-0.25.0-py3-none-any.whl (312 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 312.6/312.6 KB 3.7 MB/s eta 0:00:00 Collecting fastapi Downloading fastapi-0.91.0-py3-none-any.whl (56 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 56.2/56.2 KB 3.5 MB/s eta 0:00:00 Collecting uvicorn Downloading uvicorn-0.20.0-py3-none-any.whl (56 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 56.9/56.9 KB 3.6 MB/s eta 0:00:00 Collecting genson==1.2.2 Downloading genson-1.2.2.tar.gz (34 kB) Preparing metadata (setup.py): started Preparing metadata (setup.py): finished with status 'done' Collecting requests-cache Downloading requests_cache-0.9.8-py3-none-any.whl (48 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 48.7/48.7 KB 3.4 MB/s eta 0:00:00 Collecting requests Downloading requests-2.28.2-py3-none-any.whl (62 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 62.8/62.8 KB 4.5 MB/s eta 0:00:00 Collecting cachetools Downloading cachetools-5.3.0-py3-none-any.whl (9.3 kB) Collecting jsonschema~=3.2.0 Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 56.3/56.3 KB 3.6 MB/s eta 0:00:00 Collecting python-dateutil Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 247.7/247.7 KB 4.5 MB/s eta 0:00:00 Collecting jsonref~=0.2 Downloading jsonref-0.3.0-py3-none-any.whl (8.8 kB) Collecting PyYAML~=5.4 Downloading PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl (630 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 630.1/630.1 KB 6.3 MB/s eta 0:00:00 Collecting isodate~=0.6.1 Downloading isodate-0.6.1-py2.py3-none-any.whl (41 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 41.7/41.7 KB 5.7 MB/s eta 0:00:00 Collecting Jinja2~=3.1.2 Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 133.1/133.1 KB 6.8 MB/s eta 0:00:00 Collecting dpath~=2.0.1 Downloading dpath-2.0.8-py3-none-any.whl (15 kB) Collecting dataclasses-jsonschema==2.15.1 Downloading dataclasses_jsonschema-2.15.1-py3-none-any.whl (17 kB) Collecting pydantic~=1.9.2 Downloading pydantic-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 MB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 12.4/12.4 MB 17.5 MB/s eta 0:00:00 Collecting backoff Downloading backoff-2.2.1-py3-none-any.whl (15 kB) Collecting pendulum Downloading pendulum-2.1.2-cp39-cp39-manylinux1_x86_64.whl (155 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 155.3/155.3 KB 9.0 MB/s eta 0:00:00 Collecting Deprecated~=1.2 Downloading Deprecated-1.2.13-py2.py3-none-any.whl (9.6 kB) Collecting starlette<0.25.0,>=0.24.0 Downloading starlette-0.24.0-py3-none-any.whl (65 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 65.8/65.8 KB 2.7 MB/s eta 0:00:00 Collecting h11>=0.8 Downloading h11-0.14.0-py3-none-any.whl (58 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 58.3/58.3 KB 4.3 MB/s eta 0:00:00 Collecting click>=7.0 Downloading click-8.1.3-py3-none-any.whl (96 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 96.6/96.6 KB 4.3 MB/s eta 0:00:00 Collecting wrapt<2,>=1.10 Downloading wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (77 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 77.8/77.8 KB 9.6 MB/s eta 0:00:00 Collecting six Downloading six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting MarkupSafe>=2.0 Downloading MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB) Collecting attrs>=17.4.0 Downloading attrs-22.2.0-py3-none-any.whl (60 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 60.0/60.0 KB 7.1 MB/s eta 0:00:00 Collecting pyrsistent>=0.14.0 Downloading pyrsistent-0.19.3-py3-none-any.whl (57 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 57.5/57.5 KB 8.1 MB/s eta 0:00:00 Requirement already satisfied: setuptools in /usr/local/lib/python3.9/site-packages (from jsonschema~=3.2.0->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (5Collecting typing-extensions>=3.7.4.3 Downloading typing_extensions-4.4.0-py3-none-any.whl (26 kB) Collecting anyio<5,>=3.4.0 Downloading anyio-3.6.2-py3-none-any.whl (80 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 80.6/80.6 KB 9.9 MB/s eta 0:00:00 Collecting pytzdata>=2020.1 Downloading pytzdata-2020.1-py2.py3-none-any.whl (489 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 490.0/490.0 KB 24.7 MB/s eta 0:00:00 Collecting urllib3<1.27,>=1.21.1 Downloading urllib3-1.26.14-py2.py3-none-any.whl (140 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 140.6/140.6 KB 19.2 MB/s eta 0:00:00 Collecting idna<4,>=2.5 Downloading idna-3.4-py3-none-any.whl (61 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 61.5/61.5 KB 7.5 MB/s eta 0:00:00 Collecting certifi>=2017.4.17 Downloading certifi-2022.12.7-py3-none-any.whl (155 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 155.3/155.3 KB 18.3 MB/s eta 0:00:00 Collecting charset-normalizer<4,>=2 Downloading charset_normalizer-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (198 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 198.8/198.8 KB 5.3 MB/s eta 0:00:00 Collecting appdirs>=1.4.4 Downloading appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB) Collecting url-normalize>=1.4 Downloading url_normalize-1.4.3-py2.py3-none-any.whl (6.8 kB) Collecting cattrs>=22.2 Downloading cattrs-22.2.0-py3-none-any.whl (35 kB) Collecting sniffio>=1.1 Downloading sniffio-1.3.0-py3-none-any.whl (10 kB) Collecting exceptiongroup Downloading exceptiongroup-1.1.0-py3-none-any.whl (14 kB) Building wheels for collected packages: genson Building wheel for genson (setup.py): started Building wheel for genson (setup.py): finished with status 'done' Created wheel for genson: filename=genson-1.2.2-py2.py3-none-any.whl size=21291 sha256=e98aac84c65f98c13c36f678263c5222979a806fe206e6d83b738ae05a9f6e13 Stored in directory: /root/.cache/pip/wheels/3c/d7/98/a29f29e3861092e784c4c4994b0b30304c79da1bcbc8284af1 Successfully built genson > Task :airbyte-api:generateApiServerLegacy ################################################################################ # Thanks for using OpenAPI Generator. # # Please consider donation to help us maintain this project ? # # https://opencollective.com/openapi_generator/donate # ################################################################################ Successfully generated code to G:\Programming\Forks\airbyte\airbyte-api\build/generated/api/server > Task :airbyte-commons:test AuthRoleTest > testBuildingAuthRoleSet() PASSED Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. > Task :airbyte-featureflag:kaptKotlin Annotation processors discovery from compile classpath is deprecated. Set 'kapt.include.compile.classpath=false' to disable discovery. Run the build with '--info' for more details. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. > Task :airbyte-connector-builder-server:airbytePythonDockerApply Installing collected packages: genson, charset-normalizer, appdirs, wrapt, urllib3, typing-extensions, sniffio, six, PyYAML, pytzdata, pyrsistent, MarkupSafe, jsonref, idna, h11, exceptiongroup, dpath, click, certifi, cachetools, backoff, attrs, uvicorn, url-normalize, requests, python-dateutil, pydantic, jsonschema, Jinja2, isodate, Deprecated, cattrs, anyio, starlette, requests-cache, pendulum, dataclasses-jsonschema, fastapi, airbyte-cdk, connector-builder-server > Task :airbyte-commons-protocol:compileJava Note: Creating bean classes for 8 type elements Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. > Task :airbyte-commons:test WaitingUtilsTest > testWaitForConditionTimeout() PASSED WaitingUtilsTest > testWaitForConditionConditionMet() PASSED EnumsTest > testIsCompatible() PASSED EnumsTest > testNotCompatibleDifferentNames() PASSED EnumsTest > testNotCompatibleDifferentLength2() PASSED EnumsTest > testConversionFails() PASSED EnumsTest > testSelfCompatible() PASSED EnumsTest > testConversion() PASSED EnumsTest > testToEnum() PASSED EnumsTest > testNotCompatibleDifferentLength() PASSED FeatureFlagHelperTest > isFieldSelectionEnabledForWorkspaceWithEmptyString() PASSED FeatureFlagHelperTest > isFieldSelectionEnabledForWorkspaceWithSomeIdsAndNoMatch() PASSED FeatureFlagHelperTest > isFieldSelectionEnabledForWorkspaceWithSomeIdsAndAMatch() PASSED FeatureFlagHelperTest > isFieldSelectionEnabledForWorkspaceWithSpaceString() PASSED FeatureFlagHelperTest > isFieldSelectionEnabledForNullWorkspaceWithEmptyString() PASSED FeatureFlagHelperTest > isFieldSelectionEnabledForWorkspaceWithNullString() PASSED IOsTest > testGetTailExists() PASSED IOsTest > testWriteBytes() PASSED IOsTest > testGetTailDoesNotExist() PASSED IOsTest > testInputStream() PASSED IOsTest > testReadWrite() PASSED IOsTest > testSilentClose() PASSED IOsTest > testWriteFileToRandomDir() FAILED java.lang.RuntimeException: java.nio.file.NoSuchFileException: \tmp\6b2d1c27-91cd-48ea-975a-8262f86ffe57 at io.airbyte.commons.io.IOs.writeFileToRandomTmpDir(IOs.java:62) at io.airbyte.commons.io.IOsTest.testWriteFileToRandomDir(IOsTest.java:55) Caused by: java.nio.file.NoSuchFileException: \tmp\6b2d1c27-91cd-48ea-975a-8262f86ffe57 at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) at java.base/sun.nio.fs.WindowsFileSystemProvider.createDirectory(WindowsFileSystemProvider.java:521) at java.base/java.nio.file.Files.createDirectory(Files.java:700) at io.airbyte.commons.io.IOs.writeFileToRandomTmpDir(IOs.java:58) ... 1 more LineGobblerTest > readAllLines() PASSED LineGobblerTest > shutdownOnSuccess() PASSED LineGobblerTest > shutdownOnError() PASSED > Task :airbyte-featureflag:kaptKotlin Note: Creating bean classes for 3 type elements > Task :airbyte-connector-builder-server:airbytePythonDockerApply Running setup.py develop for connector-builder-server Successfully installed Deprecated-1.2.13 Jinja2-3.1.2 MarkupSafe-2.1.2 PyYAML-5.4.1 airbyte-cdk-0.25.0 anyio-3.6.2 appdirs-1.4.4 attrs-22.2.0 backoff-2.2.1 cachetools-5.3.0 cattrs-22.2.0 certifi-2022.12.7 charset-normalizer-3.0.1 click-8.1.3 connector-builder-server-0.40.32 dataclasses-jsonschema-2.15.1 dpath-2.0.8 exceptiongroup-1.1.0 fastapi-0.91.0 genson-1.2.2 h11-0.14.0 idna-3.4 isodate-0.6.1 jsonref-0.3.0 jsonschema-3.2.0 pendulum-2.1.2 pydantic-1.9.2 pyrsistent-0.19.3 python-dateutil-2.8.2 pytzdata-2020.1 requests-2.28.2 requests-cache-0.9.8 six-1.16.0 sniffio-1.3.0 starlette-0.24.0 typing-extensions-4.4.0 url-normalize-1.4.3 urllib3-1.26.14 uvicorn-0.20WARNING: You are using pip version 22.0.4; however, version 23.0 is available. You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command. Obtaining file:///home Preparing metadata (setup.py): started Preparing metadata (setup.py): finished with status 'done' WARNING: connector-builder-server 0.40.32 does not provide the extra 'main' Requirement already satisfied: airbyte-cdk==0.25.0 in /usr/local/lib/python3.9/site-packages (from connector-builder-server==0.40.32) (0.25.0) Requirement already satisfied: fastapi in /usr/local/lib/python3.9/site-packages (from connector-builder-server==0.40.32) (0.91.0) Requirement already satisfied: uvicorn in /usr/local/lib/python3.9/site-packages (from connector-builder-server==0.40.32) (0.20.0) Requirement already satisfied: requests-cache in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.9.8) Requirement already satisfied: isodate~=0.6.1 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.6.1) Requirement already satisfied: pydantic~=1.9.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.9.2) Requirement already satisfied: python-dateutil in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.8.2) Requirement already satisfied: genson==1.2.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.2.2) Requirement already satisfied: PyYAML~=5.4 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (5.4.1) Requirement already satisfied: requests in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.28.2) Requirement already satisfied: Jinja2~=3.1.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.1.2) Requirement already satisfied: pendulum in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.1.2) Requirement already satisfied: jsonref~=0.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.3.0) Requirement already satisfied: cachetools in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (5.3.0) Requirement already satisfied: dpath~=2.0.1 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.0.8) Requirement already satisfied: dataclasses-jsonschema==2.15.1 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.15.1) Requirement already satisfied: jsonschema~=3.2.0 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.2.0) Requirement already satisfied: backoff in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.2.1) Requirement already satisfied: Deprecated~=1.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.2.13) Requirement already satisfied: starlette<0.25.0,>=0.24.0 in /usr/local/lib/python3.9/site-packages (from fastapi->connector-builder-server==0.40.32) (0.24.0) Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.9/site-packages (from uvicorn->connector-builder-server==0.40.32) (8.1.3) Requirement already satisfied: h11>=0.8 in /usr/local/lib/python3.9/site-packages (from uvicorn->connector-builder-server==0.40.32) (0.14.0) Requirement already satisfied: wrapt<2,>=1.10 in /usr/local/lib/python3.9/site-packages (from Deprecated~=1.2->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.14.1) Requirement already satisfied: six in /usr/local/lib/python3.9/site-packages (from isodate~=0.6.1->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.16.0) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.9/site-packages (from Jinja2~=3.1.2->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.1.2) Requirement already satisfied: setuptools in /usr/local/lib/python3.9/site-packages (from jsonschema~=3.2.0->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (58.1.0) Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/site-packages (from jsonschema~=3.2.0->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (22.2.0) Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib/python3.9/site-packages (from jsonschema~=3.2.0->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.19.3) Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.9/site-packages (from pydantic~=1.9.2->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (4.4.0) Requirement already satisfied: anyio<5,>=3.4.0 in /usr/local/lib/python3.9/site-packages (from starlette<0.25.0,>=0.24.0->fastapi->connector-builder-server==0.40.32) (3.6.2) Requirement already satisfied: pytzdata>=2020.1 in /usr/local/lib/python3.9/site-packages (from pendulum->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2020.1) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.26.14) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.4) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2022.12.7) Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.0.1) Requirement already satisfied: appdirs>=1.4.4 in /usr/local/lib/python3.9/site-packages (from requests-cache->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.4.4) Requirement already satisfied: cattrs>=22.2 in /usr/local/lib/python3.9/site-packages (from requests-cache->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (22.2.0) Requirement already satisfied: url-normalize>=1.4 in /usr/local/lib/python3.9/site-packages (from requests-cache->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.4.3) Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.9/site-packages (from anyio<5,>=3.4.0->starlette<0.25.0,>=0.24.0->fastapi->connector-builder-server==0.40.32) (1.3.0) Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.9/site-packages (from cattrs>=22.2->requests-cache->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.1.0) Installing collected packages: connector-builder-server Attempting uninstall: connector-builder-server Found existing installation: connector-builder-server 0.40.32 Uninstalling connector-builder-server-0.40.32: Successfully uninstalled connector-builder-server-0.40.32 Running setup.py develop for connector-builder-server > Task :airbyte-config:config-models:compileJava Note: Creating bean classes for 27 type elements Note: G:\Programming\Forks\airbyte\airbyte-config\config-models\src\main\java\io\airbyte\config\ConfigSchema.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. > Task :airbyte-commons:test JsonPathsTest > testIsPathPresent() PASSED JsonPathsTest > testReplaceAtEmptyReturnNoOp() PASSED JsonPathsTest > testReplaceAtJsonNodeLoudMultipleReplace() PASSED JsonPathsTest > testReplaceAtJsonNodeLoud() PASSED JsonPathsTest > testGetPaths() PASSED JsonPathsTest > testReplaceAtJsonNode() PASSED JsonPathsTest > testReplaceAtJsonNodeEmptyReturnNoOp() PASSED JsonPathsTest > testReplaceAtJsonNodeLoudMultipleReplaceSplatInEmptyArrayThrows() PASSED JsonPathsTest > testReplaceAtString() PASSED JsonPathsTest > testReplaceAt() PASSED JsonPathsTest > testReplaceAtStringEmptyReturnNoOp() PASSED JsonPathsTest > testGetSingleValue() PASSED JsonPathsTest > testReplaceAtStringLoud() PASSED JsonPathsTest > testReplaceAtStringLoudEmptyPathThrows() PASSED JsonPathsTest > testGetValues() PASSED JsonPathsTest > testReplaceAtJsonNodeLoudEmptyPathThrows() PASSED JsonPathsTest > testReplaceAtMultiple() PASSED JsonSchemasTest > testTraverseComposite(String) > io.airbyte.commons.json.JsonSchemasTest.testTraverseComposite(String)[1] PASSED JsonSchemasTest > testTraverseComposite(String) > io.airbyte.commons.json.JsonSchemasTest.testTraverseComposite(String)[2] PASSED JsonSchemasTest > testTraverseComposite(String) > io.airbyte.commons.json.JsonSchemasTest.testTraverseComposite(String)[3] PASSED JsonSchemasTest > testTraverseMultiType() PASSED JsonSchemasTest > testTraverseArrayTypeWithNoItemsDoNotThrowsException() PASSED JsonSchemasTest > testTraverseMultiTypeComposite() PASSED JsonSchemasTest > testMutateTypeToArrayStandard() PASSED JsonSchemasTest > testTraverse() PASSED JsonsTest > testSerializeJsonNode() PASSED JsonsTest > testFlatten__withArraysApplyFlatten() PASSED JsonsTest > testToBytes() PASSED JsonsTest > testTryDeserialize() PASSED JsonsTest > testClone() PASSED JsonsTest > testToObject() PASSED JsonsTest > testKeys() PASSED JsonsTest > testTryToObject() PASSED JsonsTest > testArrayNode() PASSED JsonsTest > testFlatten__noArrays() PASSED JsonsTest > testFlatten__withArraysApplyFlattenNested() PASSED JsonsTest > testSerialize() PASSED JsonsTest > testFlatten__withArraysNoApplyFlatten() PASSED JsonsTest > testEmptyObject() PASSED JsonsTest > testFlatten__checkBackwardCompatiblity() PASSED JsonsTest > testDeserialize() PASSED JsonsTest > testDeserializeToJsonNode() PASSED JsonsTest > testGetEstimatedByteSize() PASSED JsonsTest > testGetOptional() PASSED JsonsTest > testGetStringOrNull() PASSED JsonsTest > testToJsonNode() PASSED JsonsTest > testToPrettyString() FAILED org.opentest4j.AssertionFailedError: expected: <{ "test": "abc" } > but was: <{ "test": "abc" } > at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1142) at app//io.airbyte.commons.json.JsonsTest.testToPrettyString(JsonsTest.java:238) JsonsTest > testTryDeserializeToJsonNode() PASSED CloseableShutdownHookTest > testRegisteringShutdownHook() PASSED ExceptionsTest > testToRuntime() PASSED ExceptionsTest > testToRuntimeVoid() PASSED ExceptionsTest > testSwallow() PASSED MoreBooleansTest > evaluateNullAsFalse() PASSED Log4j2ConfigTest > testLogNoJobRoot() PASSED Log4j2ConfigTest > testLogNoAppRoot() PASSED Log4j2ConfigTest > testLogSeparateFiles() PASSED Log4j2ConfigTest > testAppDispatch() PASSED Log4j2ConfigTest > testWorkerDispatch() PASSED MaskedDataInterceptorTest > testMaskingMessageWithStringSecretWithQuotes() PASSED MaskedDataInterceptorTest > testMaskingMessageWithoutSecret() PASSED MaskedDataInterceptorTest > testMaskingMessageWithStringSecret() PASSED MaskedDataInterceptorTest > testMaskingMessageThatDoesNotMatchPattern() PASSED MaskedDataInterceptorTest > testMissingMaskingFileDoesNotPreventLogging() PASSED MaskedDataInterceptorTest > testMaskingMessageWithNumberSecret() PASSED MdcScopeTest > The MDC context is properly overrided PASSED MdcScopeTest > The MDC context is properly restored PASSED MoreMapsTest > testMerge() PASSED MoreResourcesTest > testResourceReadDuplicateName() FAILED org.opentest4j.AssertionFailedError: expected: but was: at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1142) at app//io.airbyte.commons.resources.MoreResourcesTest.testResourceReadDuplicateName(MoreResourcesTest.java:61) MoreResourcesTest > testResourceReadWithClass() FAILED org.opentest4j.AssertionFailedError: expected: but was: at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1142) at app//io.airbyte.commons.resources.MoreResourcesTest.testResourceReadWithClass(MoreResourcesTest.java:36) MoreResourcesTest > testReadBytes() FAILED org.opentest4j.AssertionFailedError: expected: but was: at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1142) at app//io.airbyte.commons.resources.MoreResourcesTest.testReadBytes(MoreResourcesTest.java:53) MoreResourcesTest > testResourceRead() FAILED org.opentest4j.AssertionFailedError: expected: but was: at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1142) at app//io.airbyte.commons.resources.MoreResourcesTest.testResourceRead(MoreResourcesTest.java:28) MoreResourcesTest > testReadResourceAsFile() FAILED org.opentest4j.AssertionFailedError: expected: but was: at app//org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151) at app//org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132) at app//org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182) at app//org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:177) at app//org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1142) at app//io.airbyte.commons.resources.MoreResourcesTest.testReadResourceAsFile(MoreResourcesTest.java:48) MoreResourcesTest > testListResource() PASSED StringsTest > testJoin() PASSED NamesTest > testSimpleQuote() PASSED NamesTest > testToAlphanumericAndUnderscore() PASSED NamesTest > testDoubleQuote() PASSED SqlsTest > testToSqlName() PASSED SqlsTest > testInFragment() PASSED AutoCloseableIteratorsTest > testFromIterator() PASSED AutoCloseableIteratorsTest > testAppendOnClose() PASSED AutoCloseableIteratorsTest > testConcatWithEagerClose() PASSED AutoCloseableIteratorsTest > testFromStream() PASSED AutoCloseableIteratorsTest > testTransform() PASSED CompositeIteratorTest > testWithEmptyIterators() PASSED CompositeIteratorTest > testMultipleIterators() PASSED CompositeIteratorTest > testEmptyInput() PASSED CompositeIteratorTest > testCannotOperateAfterClosing() PASSED CompositeIteratorTest > testCloseBeforeUsingItUp() PASSED CompositeIteratorTest > testNullInput() PASSED DefaultAutoCloseableIteratorTest > testEmptyInput() PASSED DefaultAutoCloseableIteratorTest > test() PASSED DefaultAutoCloseableIteratorTest > testCannotOperateAfterClosing() PASSED DefaultAutoCloseableIteratorTest > testNullInput() PASSED LazyAutoCloseableIteratorTest > testEmptyInput() PASSED LazyAutoCloseableIteratorTest > test() PASSED LazyAutoCloseableIteratorTest > testNullInput() PASSED LazyAutoCloseableIteratorTest > testCloseBeforeSupply() PASSED MoreListsTest > testConcat() PASSED MoreListsTest > testGetOrNull() PASSED MorePropertiesTest > testEnvFileToProperties() PASSED AirbyteProtocolVersionRangeTest > checkRangeWithOnlyOneMajor() PASSED AirbyteProtocolVersionRangeTest > checkRanges() PASSED AirbyteVersionTest > testCheckOnlyPatchVersion() PASSED AirbyteVersionTest > testLessThan() PASSED AirbyteVersionTest > testParseVersion() PASSED AirbyteVersionTest > testSerialize() PASSED AirbyteVersionTest > testGreaterThan() PASSED AirbyteVersionTest > testPatchVersionCompareTo() PASSED AirbyteVersionTest > testInvalidVersions() PASSED AirbyteVersionTest > testCompatibleVersionCompareTo() PASSED AirbyteVersionTest > testCheckVersion() PASSED AirbyteVersionTest > testParseVersionWithLabel() PASSED VersionTest > testJsonSerializationDeserialization() PASSED YamlsTest > testSerializeJsonNode() PASSED YamlsTest > testStreamRead() PASSED YamlsTest > testListWriter() PASSED YamlsTest > testSerialize() PASSED YamlsTest > testSerializeWithoutQuotes() PASSED YamlsTest > testDeserialize() PASSED YamlsTest > testDeserializeToJsonNode() PASSED 148 tests completed, 7 failed > Task :airbyte-commons:test FAILED > Task :airbyte-connector-builder-server:airbytePythonDockerApply Successfully installed connector-builder-server-0.40.32 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv WARNING: You are using pip version 22.0.4; however, version 23.0 is available. You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command. Obtaining file:///home Preparing metadata (setup.py): started Preparing metadata (setup.py): finished with status 'done' Requirement already satisfied: airbyte-cdk==0.25.0 in /usr/local/lib/python3.9/site-packages (from connector-builder-server==0.40.32) (0.25.0) Requirement already satisfied: fastapi in /usr/local/lib/python3.9/site-packages (from connector-builder-server==0.40.32) (0.91.0) Requirement already satisfied: uvicorn in /usr/local/lib/python3.9/site-packages (from connector-builder-server==0.40.32) (0.20.0) Collecting MyPy~=0.812 Downloading mypy-0.991-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 18.2/18.2 MB 28.2 MB/s eta 0:00:00 Collecting pytest~=6.2.5 Downloading pytest-6.2.5-py3-none-any.whl (280 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 280.7/280.7 KB 30.7 MB/s eta 0:00:00 Collecting pytest-cov Downloading pytest_cov-4.0.0-py3-none-any.whl (21 kB) Collecting pytest-mock Downloading pytest_mock-3.10.0-py3-none-any.whl (9.3 kB) Collecting pytest-recording Downloading pytest_recording-0.12.1-py3-none-any.whl (12 kB) Collecting requests-mock Downloading requests_mock-1.10.0-py2.py3-none-any.whl (28 kB) Collecting pre-commit Downloading pre_commit-3.0.4-py2.py3-none-any.whl (202 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 202.2/202.2 KB 17.9 MB/s eta 0:00:00 Requirement already satisfied: PyYAML~=5.4 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (5.4.1) Requirement already satisfied: jsonschema~=3.2.0 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.2.0) Requirement already satisfied: python-dateutil in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.8.2) Requirement already satisfied: Jinja2~=3.1.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.1.2) Requirement already satisfied: dataclasses-jsonschema==2.15.1 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.15.1) Requirement already satisfied: pydantic~=1.9.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.9.2) Requirement already satisfied: Deprecated~=1.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.2.13) Requirement already satisfied: genson==1.2.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.2.2) Requirement already satisfied: requests in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.28.2) Requirement already satisfied: dpath~=2.0.1 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.0.8) Requirement already satisfied: isodate~=0.6.1 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.6.1) Requirement already satisfied: cachetools in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (5.3.0) Requirement already satisfied: requests-cache in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.9.8) Requirement already satisfied: backoff in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.2.1) Requirement already satisfied: pendulum in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.1.2) Requirement already satisfied: jsonref~=0.2 in /usr/local/lib/python3.9/site-packages (from airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.3.0) Collecting mypy-extensions>=0.4.3 Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB) Requirement already satisfied: typing-extensions>=3.10 in /usr/local/lib/python3.9/site-packages (from MyPy~=0.812->connector-builder-server==0.40.32) (4.4.0) Collecting tomli>=1.1.0 Downloading tomli-2.0.1-py3-none-any.whl (12 kB) Collecting iniconfig Downloading iniconfig-2.0.0-py3-none-any.whl (5.9 kB) Collecting packaging Downloading packaging-23.0-py3-none-any.whl (42 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 42.7/42.7 KB 6.6 MB/s eta 0:00:00 Collecting py>=1.8.2 Downloading py-1.11.0-py2.py3-none-any.whl (98 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 98.7/98.7 KB 11.7 MB/s eta 0:00:00 Collecting pluggy<2.0,>=0.12 Downloading pluggy-1.0.0-py2.py3-none-any.whl (13 kB) Requirement already satisfied: attrs>=19.2.0 in /usr/local/lib/python3.9/site-packages (from pytest~=6.2.5->connector-builder-server==0.40.32) (22.2.0) Collecting toml Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB) Requirement already satisfied: starlette<0.25.0,>=0.24.0 in /usr/local/lib/python3.9/site-packages (from fastapi->connector-builder-server==0.40.32) (0.24.0) Collecting virtualenv>=20.10.0 Downloading virtualenv-20.19.0-py3-none-any.whl (8.7 MB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 8.7/8.7 MB 46.9 MB/s eta 0:00:00 Collecting identify>=1.0.0 Downloading identify-2.5.18-py2.py3-none-any.whl (98 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 98.8/98.8 KB 11.7 MB/s eta 0:00:00 Collecting cfgv>=2.0.0 Downloading cfgv-3.3.1-py2.py3-none-any.whl (7.3 kB) Collecting nodeenv>=0.11.1 Downloading nodeenv-1.7.0-py2.py3-none-any.whl (21 kB) Collecting coverage[toml]>=5.2.1 Downloading coverage-7.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (226 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 226.2/226.2 KB 14.4 MB/s eta 0:00:00 Collecting vcrpy>=2.0.1 Downloading vcrpy-4.2.1-py2.py3-none-any.whl (40 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 40.8/40.8 KB 4.4 MB/s eta 0:00:00 Requirement already satisfied: six in /usr/local/lib/python3.9/site-packages (from requests-mock->connector-builder-server==0.40.32) (1.16.0) Requirement already satisfied: click>=7.0 in /usr/local/lib/python3.9/site-packages (from uvicorn->connector-builder-server==0.40.32) (8.1.3) Requirement already satisfied: h11>=0.8 in /usr/local/lib/python3.9/site-packages (from uvicorn->connector-builder-server==0.40.32) (0.14.0) Requirement already satisfied: wrapt<2,>=1.10 in /usr/local/lib/python3.9/site-packages (from Deprecated~=1.2->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.14.1) Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.9/site-packages (from Jinja2~=3.1.2->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2.1.2) Requirement already satisfied: setuptools in /usr/local/lib/python3.9/site-packages (from jsonschema~=3.2.0->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (58.1.0) Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib/python3.9/site-packages (from jsonschema~=3.2.0->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (0.19.3) Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.4) Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2022.12.7) Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (3.0.1) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.9/site-packages (from requests->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.26.14) Requirement already satisfied: anyio<5,>=3.4.0 in /usr/local/lib/python3.9/site-packages (from starlette<0.25.0,>=0.24.0->fastapi->connector-builder-server==0.40.32) (3.6.2) Collecting yarl Downloading yarl-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (264 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 264.6/264.6 KB 32.9 MB/s eta 0:00:00 Collecting platformdirs<4,>=2.4 Downloading platformdirs-3.0.0-py3-none-any.whl (14 kB) Collecting filelock<4,>=3.4.1 Downloading filelock-3.9.0-py3-none-any.whl (9.7 kB) Collecting distlib<1,>=0.3.6 Downloading distlib-0.3.6-py2.py3-none-any.whl (468 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 468.5/468.5 KB 44.0 MB/s eta 0:00:00 Requirement already satisfied: pytzdata>=2020.1 in /usr/local/lib/python3.9/site-packages (from pendulum->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (2020.1) Requirement already satisfied: url-normalize>=1.4 in /usr/local/lib/python3.9/site-packages (from requests-cache->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.4.3) Requirement already satisfied: appdirs>=1.4.4 in /usr/local/lib/python3.9/site-packages (from requests-cache->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (1.4.4) Requirement already satisfied: cattrs>=22.2 in /usr/local/lib/python3.9/site-packages (from requests-cache->airbyte-cdk==0.25.0->connector-builder-server==0.40.32) (22.2.0) Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.9/site-packages (from anyio<5,>=3.4.0->starlette<0.25.0,>=0.24.0->fastapi->connector-builder-server==0.40.32) (1.3.0) Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.9/site-packages (from cattrs>=22.2->requests-cache->airbyte-cdk==0.25.0->connector-builder-servCollecting multidict>=4.0 Downloading multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB) ▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒?▒? 114.2/114.2 KB 12.6 MB/s eta 0:00:00 Installing collected packages: distlib, tomli, toml, py, pluggy, platformdirs, packaging, nodeenv, mypy-extensions, multidict, iniconfig, identify, filelock, coverage, Attempting uninstall: connector-builder-server Found existing installation: connector-builder-server 0.40.32 Uninstalling connector-builder-server-0.40.32: Successfully uninstalled connector-builder-server-0.40.32 Running setup.py develop for connector-builder-server Successfully installed MyPy-0.991 cfgv-3.3.1 connector-builder-server-0.40.32 coverage-7.1.0 distlib-0.3.6 filelock-3.9.0 identify-2.5.18 iniconfig-2.0.0 multidict-6.0.4 mypy-extensions-1.0.0 nodeenv-1.7.0 packaging-23.0 platformdirs-3.0.0 pluggy-1.0.0 pre-commit-3.0.4 py-1.11.0 pytest-6.2.5 pytest-cov-4.0.0 pytest-mock-3.10.0 pytest-recording-0.12.1 requests-mock-1.10.0 toml-0.10.2 tomli-2.0.1 vcrpy-4.2.1 virtualenv-20.19.0 yarl-1.8.2 WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv WARNING: You are using pip version 22.0.4; however, version 23.0 is available. collected 41 items unit_tests/test_unit_test.py::test_test PASSED [ 2%] unit_tests/connector_builder/impl/test_default_api.py::test_list_streams PASSED [ 4%] unit_tests/connector_builder/impl/test_default_api.py::test_list_streams_with_interpolated_urls PASSED [ 7%] unit_tests/connector_builder/impl/test_default_api.py::test_list_streams_with_unresolved_interpolation PASSED [ 9%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream PASSED [ 12%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_with_logs PASSED [ 14%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_record_limit[test_create_request_with_record_limit] PASSED [ 17%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_record_limit[test_create_request_record_limit_exceeds_max] PASSED [ 19%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_default_record_limit[test_create_request_no_record_limit] PASSED [ 21%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_default_record_limit[test_create_request_no_record_limit_n_records_exceed_max] PASSED [ 24%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_limit_0 PASSED [ 26%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_no_records PASSED [ 29%] unit_tests/connector_builder/impl/test_default_api.py::test_invalid_manifest -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ ERROR] Invalid connector manifest with error: Validation against auto-generated schema failed - Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/manifest_declarative_source.py", line 192, in _validate_source validate(full_config, declarative_source_schema) File "/usr/local/lib/python3.9/site-packages/jsonschema/validators.py", line 934, in validate raise error jsonschema.exceptions.ValidationError: 'streams' is a required property Failed validating 'required' in schema: {'$schema': 'http://json-schema.org/draft-06/schema#', 'definitions': {'AddFields': {'allOf': [{'$ref': '#/definitions/RecordTransformation'}, {'properties': {'_parsed_fields': {'default': [], 'items': {'$ref': '#/definitions/ParsedAddFieldDefinition'}, 'type': 'array'}, 'fields': {'items': {'$ref': '#/definitions/AddedFieldDefinition'}, 'type': 'array'}}, 'required': ['fields'], 'type': 'object'}], 'description': '\n' ' Transformation ' 'which adds field to an ' 'output record. The path ' 'of the added field can ' 'be nested. Adding ' 'nested fields will ' 'create all\n' ' necessary parent ' 'objects (like mkdir ' '-p). Adding fields to ' 'an array will extend ' 'the array to that index ' '(filling intermediate\n' ' indices with null ' 'values). So if you add ' 'a field at index 5 to ' 'the array ["value"], it ' 'will become ["value", ' 'null, null, null, ' 'null,\n' ' "new_value"].\n' '\n' '\n' ' This transformation ' 'has access to the ' 'following contextual ' 'values:\n' ' record: the ' 'record about to be ' 'output by the ' 'connector\n' ' config: the ' 'input configuration ' 'provided to a ' 'connector\n' ' stream_state: ' 'the current state of ' 'the stream\n' ' stream_slice: ' 'the current stream ' 'slice being read\n' '\n' '\n' '\n' ' Examples of ' 'instantiating this ' 'transformation via ' 'YAML:\n' ' - type: AddFields\n' ' fields:\n' ' # hardcoded ' 'constant\n' ' - path: ' '["path"]\n' ' value: ' '"static_value"\n' '\n' ' # nested path\n' ' - path: ' '["path", "to", ' '"field"]\n' ' value: ' '"static"\n' '\n' ' # from config\n' ' - path: ' '["shop_id"]\n' ' value: "{{ ' 'config.shop_id }}"\n' '\n' ' # from state\n' ' - path: ' '["current_state"]\n' ' value: "{{ ' 'stream_state.cursor_field ' '}}" # Or {{ ' "stream_state['cursor_field'] " '}}\n' '\n' ' # from record\n' ' - path: ' '["unnested_value"]\n' ' value: {{ ' 'record.nested.field }}\n' '\n' ' # from ' 'stream_slice\n' ' - path: ' '["start_date"]\n' ' value: {{ ' 'stream_slice.start_date ' '}}\n' '\n' ' # by supplying ' 'any valid Jinja ' 'template directive or ' 'expression ' 'https://jinja.palletsprojects.com/en/3.1.x/templates/#\n' ' - path: ' '["two_times_two"]\n' ' value: {{ 2 * ' '2 }}\n' '\n' ' Attributes:\n' ' fields ' '(List[AddedFieldDefinition]): ' 'A list of ' 'transformations (path ' 'and corresponding ' 'value) that will be ' 'added to the record\n' ' '}, 'AddedFieldDefinition': {'description': 'Defines the ' 'field to add ' 'on a record', 'properties': {'path': {'items': {'type': 'string'}, 'type': 'array'}, 'value': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['path', 'value'], 'type': 'object'}, 'ApiKeyAuthenticator': {'allOf': [{'$ref': '#/definitions/DeclarativeAuthenticator'}, {'properties': {'api_token': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'config': {'type': 'object'}, 'header': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['header', 'api_token', 'config'], 'type': 'object'}], 'description': '\n' ' ' 'ApiKeyAuth ' 'sets a ' 'request ' 'header on the ' 'HTTP requests ' 'sent.\n' '\n' ' The ' 'header is of ' 'the form:\n' ' ' '`"
": ' '""`\n' '\n' ' For ' 'example,\n' ' ' '`ApiKeyAuthenticator("Authorization", ' '"Bearer ' 'hello")`\n' ' will ' 'result in the ' 'following ' 'header set on ' 'the HTTP ' 'request\n' ' ' '`"Authorization": ' '"Bearer ' 'hello"`\n' '\n' ' ' 'Attributes:\n' ' ' 'header ' '(Union[InterpolatedString, ' 'str]): Header ' 'key to set on ' 'the HTTP ' 'requests\n' ' ' 'api_token ' '(Union[InterpolatedString, ' 'str]): Header ' 'value to set ' 'on the HTTP ' 'requests\n' ' ' 'config ' '(Config): The ' 'user-provided ' 'configuration ' 'as specified ' 'by the ' "source's " 'spec\n' ' ' 'options ' '(Mapping[str, ' 'Any]): ' 'Additional ' 'runtime ' 'parameters to ' 'be used for ' 'string ' 'interpolation\n' ' '}, 'BackoffStrategy': {'description': '\n' ' Backoff ' 'strategy defining ' 'how long to wait ' 'before retrying a ' 'request that ' 'resulted in an ' 'error.\n' ' ', 'properties': {}, 'type': 'object'}, 'BasicHttpAuthenticator': {'allOf': [{'$ref': '#/definitions/DeclarativeAuthenticator'}, {'properties': {'config': {'type': 'object'}, 'password': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': ''}, 'username': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['username', 'config'], 'type': 'object'}], 'description': '\n' ' Builds ' 'auth based ' 'off the ' 'basic ' 'authentication ' 'scheme as ' 'defined by ' 'RFC 7617, ' 'which ' 'transmits ' 'credentials ' 'as USER ' 'ID/password ' 'pairs, ' 'encoded ' 'using ' 'base64\n' ' ' 'https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#basic_authentication_scheme\n' '\n' ' The ' 'header is ' 'of the ' 'form\n' ' ' '`"Authorization": ' '"Basic ' '"`\n' '\n' ' ' 'Attributes:\n' ' ' 'username ' '(Union[InterpolatedString, ' 'str]): The ' 'username\n' ' ' 'config ' '(Config): ' 'The ' 'user-provided ' 'configuration ' 'as ' 'specified ' 'by the ' "source's " 'spec\n' ' ' 'password ' '(Union[InterpolatedString, ' 'str]): The ' 'password\n' ' ' 'options ' '(Mapping[str, ' 'Any]): ' 'Additional ' 'runtime ' 'parameters ' 'to be used ' 'for string ' 'interpolation\n' ' '}, 'BearerAuthenticator': {'allOf': [{'$ref': '#/definitions/DeclarativeAuthenticator'}, {'properties': {'api_token': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'config': {'type': 'object'}}, 'required': ['api_token', 'config'], 'type': 'object'}], 'description': '\n' ' ' 'Authenticator ' 'that sets the ' 'Authorization ' 'header on the ' 'HTTP requests ' 'sent.\n' '\n' ' The ' 'header is of ' 'the form:\n' ' ' '`"Authorization": ' '"Bearer ' '"`\n' '\n' ' ' 'Attributes:\n' ' ' 'api_token ' '(Union[InterpolatedString, ' 'str]): The ' 'bearer token\n' ' ' 'config ' '(Config): The ' 'user-provided ' 'configuration ' 'as specified ' 'by the ' "source's " 'spec\n' ' ' 'options ' '(Mapping[str, ' 'Any]): ' 'Additional ' 'runtime ' 'parameters to ' 'be used for ' 'string ' 'interpolation\n' ' '}, 'CartesianProductStreamSlicer': {'allOf': [{'$ref': '#/definitions/StreamSlicer'}, {'properties': {'stream_slicers': {'items': {'$ref': '#/definitions/StreamSlicer'}, 'type': 'array'}}, 'required': ['stream_slicers'], 'type': 'object'}], 'description': '\n' ' ' 'Stream ' 'slicers ' 'that ' 'iterates ' 'over ' 'the ' 'cartesian ' 'product ' 'of ' 'input ' 'stream ' 'slicers\n' ' ' 'Given ' '2 ' 'stream ' 'slicers ' 'with ' 'the ' 'following ' 'slices:\n' ' ' 'A: ' '[{"i": ' '0}, ' '{"i": ' '1}, ' '{"i": ' '2}]\n' ' ' 'B: ' '[{"s": ' '"hello"}, ' '{"s": ' '"world"}]\n' ' ' 'the ' 'resulting ' 'stream ' 'slices ' 'are\n' ' ' '[\n' ' ' '{"i": ' '0, ' '"s": ' '"hello"},\n' ' ' '{"i": ' '0, ' '"s": ' '"world"},\n' ' ' '{"i": ' '1, ' '"s": ' '"hello"},\n' ' ' '{"i": ' '1, ' '"s": ' '"world"},\n' ' ' '{"i": ' '2, ' '"s": ' '"hello"},\n' ' ' '{"i": ' '2, ' '"s": ' '"world"},\n' ' ' ']\n' '\n' ' ' 'Attributes:\n' ' ' 'stream_slicers ' '(List[StreamSlicer]): ' 'Underlying ' 'stream ' 'slicers. ' 'The ' 'RequestOptions ' '(e.g: ' 'Request ' 'headers, ' 'parameters, ' 'etc..) ' 'returned ' 'by ' 'this ' 'slicer ' 'are ' 'the ' 'combination ' 'of ' 'the ' 'RequestOptions ' 'of ' 'its ' 'input ' 'slicers. ' 'If ' 'there ' 'are ' 'conflicts ' 'e.g: ' 'two ' 'slicers ' 'define ' 'the ' 'same ' 'header ' 'or ' 'request ' 'param, ' 'the ' 'conflict ' 'is ' 'resolved ' 'by ' 'taking ' 'the ' 'value ' 'from ' 'the ' 'first ' 'slicer, ' 'where ' 'ordering ' 'is ' 'determined ' 'by ' 'the ' 'order ' 'in ' 'which ' 'slicers ' 'were ' 'input ' 'to ' 'this ' 'composite ' 'slicer.\n' ' '}, 'CheckStream': {'description': '\n' ' Checks the ' 'connections by ' 'checking availability ' 'of one or many ' 'streams selected by ' 'the developer\n' '\n' ' Attributes:\n' ' stream_name ' '(List[str]): names of ' 'streams to check\n' ' ', 'properties': {'stream_names': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['stream_names'], 'type': 'object'}, 'CompositeErrorHandler': {'allOf': [{'$ref': '#/definitions/ErrorHandler'}, {'properties': {'error_handlers': {'items': {'$ref': '#/definitions/ErrorHandler'}, 'type': 'array'}}, 'required': ['error_handlers'], 'type': 'object'}], 'description': '\n' ' Error ' 'handler ' 'that ' 'sequentially ' 'iterates ' 'over a list ' 'of ' '`ErrorHandler`s\n' '\n' ' Sample ' 'config ' 'chaining 2 ' 'different ' 'retriers:\n' ' ' 'error_handler:\n' ' ' 'type: ' '"CompositeErrorHandler"\n' ' ' 'error_handlers:\n' ' ' '- ' 'response_filters:\n' ' ' '- ' 'predicate: ' '"{{ ' "'codase' in " 'response ' '}}"\n' ' ' 'action: ' 'RETRY\n' ' ' 'backoff_strategies:\n' ' ' '- type: ' '"ConstantBackoff"\n' ' ' 'backoff_time_in_seconds: ' '5\n' ' ' '- ' 'response_filters:\n' ' ' '- ' 'http_codes: ' '[ 403 ]\n' ' ' 'action: ' 'RETRY\n' ' ' 'backoff_strategies:\n' ' ' '- type: ' '"ConstantBackoff"\n' ' ' 'backoff_time_in_seconds: ' '10\n' ' ' 'Attributes:\n' ' ' 'error_handlers ' '(List[ErrorHandler]): ' 'list of ' 'error ' 'handlers\n' ' '}, 'DatetimeStreamSlicer': {'allOf': [{'$ref': '#/definitions/StreamSlicer'}, {'properties': {'_cursor': {'type': 'object'}, '_cursor_end': {'type': 'object'}, 'config': {'type': 'object'}, 'cursor_field': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'cursor_granularity': {'type': 'string'}, 'datetime_format': {'type': 'string'}, 'end_datetime': {'anyOf': [{'$ref': '#/definitions/MinMaxDatetime'}, {'type': 'string'}]}, 'end_time_option': {'$ref': '#/definitions/RequestOption'}, 'lookback_window': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'start_datetime': {'anyOf': [{'$ref': '#/definitions/MinMaxDatetime'}, {'type': 'string'}]}, 'start_time_option': {'$ref': '#/definitions/RequestOption'}, 'step': {'type': 'string'}, 'stream_state_field_end': {'type': 'string'}, 'stream_state_field_start': {'type': 'string'}}, 'required': ['start_datetime', 'end_datetime', 'step', 'cursor_field', 'datetime_format', 'cursor_granularity', 'config'], 'type': 'object'}], 'description': '\n' ' Slices ' 'the stream ' 'over a ' 'datetime ' 'range.\n' '\n' ' Given a ' 'start time, ' 'end time, a ' 'step ' 'function, ' 'and an ' 'optional ' 'lookback ' 'window,\n' ' the ' 'stream ' 'slicer will ' 'partition ' 'the date ' 'range from ' 'start time - ' 'lookback ' 'window to ' 'end time.\n' '\n' ' The step ' 'function is ' 'defined as a ' 'string of ' 'the form ' 'ISO8601 ' 'duration\n' '\n' ' The ' 'timestamp ' 'format ' 'accepts the ' 'same format ' 'codes as ' 'datetime.strfptime, ' 'which are\n' ' all the ' 'format codes ' 'required by ' 'the 1989 C ' 'standard.\n' ' Full ' 'list of ' 'accepted ' 'format ' 'codes: ' 'https://man7.org/linux/man-pages/man3/strftime.3.html\n' '\n' ' ' 'Attributes:\n' ' ' 'start_datetime ' '(Union[MinMaxDatetime, ' 'str]): the ' 'datetime ' 'that ' 'determines ' 'the earliest ' 'record that ' 'should be ' 'synced\n' ' ' 'end_datetime ' '(Union[MinMaxDatetime, ' 'str]): the ' 'datetime ' 'that ' 'determines ' 'the last ' 'record that ' 'should be ' 'synced\n' ' step ' '(str): size ' 'of the ' 'timewindow ' '(ISO8601 ' 'duration)\n' ' ' 'cursor_field ' '(Union[InterpolatedString, ' 'str]): ' "record's " 'cursor ' 'field\n' ' ' 'datetime_format ' '(str): ' 'format of ' 'the ' 'datetime\n' ' ' 'cursor_granularity ' '(str): ' 'smallest ' 'increment ' 'the ' 'datetime_format ' 'has (ISO ' '8601 ' 'duration) ' 'that will be ' 'used to ' 'ensure that ' 'the start of ' 'a slice does ' 'not overlap ' 'with the end ' 'of the ' 'previous ' 'one\n' ' ' 'config ' '(Config): ' 'connection ' 'config\n' ' ' 'start_time_option ' '(Optional[RequestOption]): ' 'request ' 'option for ' 'start time\n' ' ' 'end_time_option ' '(Optional[RequestOption]): ' 'request ' 'option for ' 'end time\n' ' ' 'stream_state_field_start ' '(Optional[str]): ' 'stream slice ' 'start time ' 'field\n' ' ' 'stream_state_field_end ' '(Optional[str]): ' 'stream slice ' 'end time ' 'field\n' ' ' 'lookback_window ' '(Optional[InterpolatedString]): ' 'how many ' 'days before ' 'start_datetime ' 'to read data ' 'for (ISO8601 ' 'duration)\n' ' '}, 'DeclarativeAuthenticator': {'description': '\n' ' ' 'Interface ' 'used to ' 'associate ' 'which ' 'authenticators ' 'can be ' 'used as ' 'part of ' 'the ' 'declarative ' 'framework\n' ' ', 'properties': {}, 'type': 'object'}, 'DeclarativeOauth2Authenticator': {'allOf': [{'$ref': '#/definitions/DeclarativeAuthenticator'}, {'properties': {'_token_expiry_date': {}, 'access_token_name': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': 'access_token'}, 'client_id': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'client_secret': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'config': {'type': 'object'}, 'expires_in_name': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': 'expires_in'}, 'grant_type': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': 'refresh_token'}, 'refresh_request_body': {'type': 'object'}, 'refresh_token': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'scopes': {'items': {'type': 'string'}, 'type': 'array'}, 'token_expiry_date': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'token_expiry_date_format': {'type': 'string'}, 'token_refresh_endpoint': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['token_refresh_endpoint', 'client_id', 'client_secret', 'refresh_token', 'config'], 'type': 'object'}], 'description': '\n' ' ' 'Generates ' 'OAuth2.0 ' 'access ' 'tokens ' 'from ' 'an ' 'OAuth2.0 ' 'refresh ' 'token ' 'and ' 'client ' 'credentials ' 'based ' 'on\n' ' ' 'a ' 'declarative ' 'connector ' 'configuration ' 'file. ' 'Credentials ' 'can ' 'be ' 'defined ' 'explicitly ' 'or ' 'via ' 'interpolation\n' ' ' 'at ' 'runtime. ' 'The ' 'generated ' 'access ' 'token ' 'is ' 'attached ' 'to ' 'each ' 'request ' 'via ' 'the ' 'Authorization ' 'header.\n' '\n' ' ' 'Attributes:\n' ' ' 'token_refresh_endpoint ' '(Union[InterpolatedString, ' 'str]): ' 'The ' 'endpoint ' 'to ' 'refresh ' 'the ' 'access ' 'token\n' ' ' 'client_id ' '(Union[InterpolatedString, ' 'str]): ' 'The ' 'client ' 'id\n' ' ' 'client_secret ' '(Union[InterpolatedString, ' 'str]): ' 'Client ' 'secret\n' ' ' 'refresh_token ' '(Union[InterpolatedString, ' 'str]): ' 'The ' 'token ' 'used ' 'to ' 'refresh ' 'the ' 'access ' 'token\n' ' ' 'access_token_name ' '(Union[InterpolatedString, ' 'str]): ' 'THe ' 'field ' 'to ' 'extract ' 'access ' 'token ' 'from ' 'in ' 'the ' 'response\n' ' ' 'expires_in_name ' '(Union[InterpolatedString, ' 'str]): ' 'The ' 'field ' 'to ' 'extract ' 'expires_in ' 'from ' 'in ' 'the ' 'response\n' ' ' 'config ' '(Mapping[str, ' 'Any]): ' 'The ' 'user-provided ' 'configuration ' 'as ' 'specified ' 'by ' 'the ' "source's " 'spec\n' ' ' 'scopes ' '(Optional[List[str]]): ' 'The ' 'scopes ' 'to ' 'request\n' ' ' 'token_expiry_date ' '(Optional[Union[InterpolatedString, ' 'str]]): ' 'The ' 'access ' 'token ' 'expiration ' 'date\n' ' ' 'token_expiry_date_format ' 'str: ' 'format ' 'of ' 'the ' 'datetime; ' 'provide ' 'it ' 'if ' 'expires_in ' 'is ' 'returned ' 'in ' 'datetime ' 'instead ' 'of ' 'seconds\n' ' ' 'refresh_request_body ' '(Optional[Mapping[str, ' 'Any]]): ' 'The ' 'request ' 'body ' 'to ' 'send ' 'in ' 'the ' 'refresh ' 'request\n' ' ' 'grant_type: ' 'The ' 'grant_type ' 'to ' 'request ' 'for ' 'access_token\n' ' '}, 'DeclarativeStream': {'description': '\n' ' ' 'DeclarativeStream ' 'is a Stream ' 'that delegates ' 'most of its ' 'logic to its ' 'schema_load and ' 'retriever\n' '\n' ' ' 'Attributes:\n' ' name ' '(str): stream ' 'name\n' ' ' 'primary_key ' '(Optional[Union[str, ' 'List[str], ' 'List[List[str]]]]): ' 'the primary key ' 'of the stream\n' ' ' 'schema_loader ' '(SchemaLoader): ' 'The schema ' 'loader\n' ' ' 'retriever ' '(Retriever): ' 'The retriever\n' ' config ' '(Config): The ' 'user-provided ' 'configuration ' 'as specified by ' "the source's " 'spec\n' ' ' 'stream_cursor_field ' '(Optional[List[str]]): ' 'The cursor ' 'field\n' ' ' 'transformations ' '(List[RecordTransformation]): ' 'A list of ' 'transformations ' 'to be applied ' 'to each output ' 'record in the\n' ' stream. ' 'Transformations ' 'are applied in ' 'the order in ' 'which they are ' 'defined.\n' ' ' 'checkpoint_interval ' '(Optional[int]): ' 'How often the ' 'stream will ' 'checkpoint ' 'state (i.e: ' 'emit a STATE ' 'message)\n' ' ', 'properties': {'_name': {'default': '', 'type': 'string'}, '_primary_key': {'default': '', 'type': 'string'}, '_schema_loader': {'anyOf': [{'$ref': '#/definitions/JsonFileSchemaLoader'}, {'$ref': '#/definitions/DefaultSchemaLoader'}, {'$ref': '#/definitions/InlineSchemaLoader'}]}, 'checkpoint_interval': {'type': 'integer'}, 'config': {'type': 'object'}, 'name': {'default': , 'type': 'string'}, 'primary_key': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'items': {'items': {'type': 'string'}, 'type': 'array'}, 'type': 'array'}, {'type': 'string'}], 'default': }, 'retriever': {'$ref': '#/definitions/SimpleRetriever'}, 'schema_loader': {'anyOf': [{'$ref': '#/definitions/JsonFileSchemaLoader'}, {'$ref': '#/definitions/DefaultSchemaLoader'}, {'$ref': '#/definitions/InlineSchemaLoader'}]}, 'stream_cursor_field': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'string'}]}, 'transformations': {'items': {'anyOf': [{'$ref': '#/definitions/AddFields'}, {'$ref': '#/definitions/RemoveFields'}]}, 'type': 'array'}}, 'required': ['retriever', 'config'], 'type': 'object'}, 'Decoder': {'description': '\n' ' Decoder strategy to ' 'transform a ' 'requests.Response into a ' 'Mapping[str, Any]\n' ' ', 'properties': {}, 'type': 'object'}, 'DefaultErrorHandler': {'allOf': [{'$ref': '#/definitions/ErrorHandler'}, {'properties': {'_max_retries': {'default': 5, 'type': 'integer'}, 'backoff_strategies': {'items': {'$ref': '#/definitions/BackoffStrategy'}, 'type': 'array'}, 'config': {'type': 'object'}, 'max_retries': {'default': , 'type': 'integer'}, 'response_filters': {'items': {'$ref': '#/definitions/HttpResponseFilter'}, 'type': 'array'}}, 'required': ['config'], 'type': 'object'}], 'description': '\n' ' Default ' 'error ' 'handler.\n' '\n' ' By ' 'default, the ' 'handler will ' 'only retry ' 'server errors ' '(HTTP 5XX) ' 'and too many ' 'requests ' '(HTTP 429) ' 'with ' 'exponential ' 'backoff.\n' '\n' ' If the ' 'response is ' 'successful, ' 'then return ' 'SUCCESS\n' ' ' 'Otherwise, ' 'iterate over ' 'the ' 'response_filters.\n' ' If any of ' 'the filter ' 'match the ' 'response, ' 'then return ' 'the ' 'appropriate ' 'status.\n' ' If the ' 'match is ' 'RETRY, then ' 'iterate ' 'sequentially ' 'over the ' 'backoff_strategies ' 'and return ' 'the first ' 'non-None ' 'backoff ' 'time.\n' '\n' ' Sample ' 'configs:\n' '\n' ' 1. retry ' '10 times\n' ' `\n' ' ' 'error_handler:\n' ' ' 'max_retries: ' '10\n' ' `\n' ' 2. ' 'backoff for 5 ' 'seconds\n' ' `\n' ' ' 'error_handler:\n' ' ' 'backoff_strategies:\n' ' - ' 'type: ' '"ConstantBackoff"\n' ' ' 'backoff_time_in_seconds: ' '5\n' ' `\n' ' 3. retry ' 'on HTTP 404\n' ' `\n' ' ' 'error_handler:\n' ' ' 'response_filters:\n' ' - ' 'http_codes: [ ' '404 ]\n' ' ' 'action: ' 'RETRY\n' ' `\n' ' 4. ignore ' 'HTTP 404\n' ' `\n' ' ' 'error_handler:\n' ' ' 'response_filters:\n' ' - ' 'http_codes: [ ' '404 ]\n' ' ' 'action: ' 'IGNORE\n' ' `\n' ' 5. retry ' 'if error ' 'message ' 'contains ' '`retrythisrequest!` ' 'substring\n' ' `\n' ' ' 'error_handler:\n' ' ' 'response_filters:\n' ' - ' 'error_message_contain: ' '"retrythisrequest!"\n' ' ' 'action: ' 'IGNORE\n' ' `\n' ' 6. retry ' "if 'code' is " 'a field ' 'present in ' 'the response ' 'body\n' ' `\n' ' ' 'error_handler:\n' ' ' 'response_filters:\n' ' - ' 'predicate: ' '"{{ \'code\' ' 'in response ' '}}"\n' ' ' 'action: ' 'IGNORE\n' ' `\n' '\n' ' 7. ignore ' '429 and retry ' 'on 404\n' ' `\n' ' ' 'error_handler:\n' ' - ' 'http_codes: [ ' '429 ]\n' ' ' 'action: ' 'IGNORE\n' ' - ' 'http_codes: [ ' '404 ]\n' ' ' 'action: ' 'RETRY\n' ' `\n' '\n' ' ' 'Attributes:\n' ' ' 'response_filters ' '(Optional[List[HttpResponseFilter]]): ' 'response ' 'filters to ' 'iterate on\n' ' ' 'max_retries ' '(Optional[int]): ' 'maximum retry ' 'attempts\n' ' ' 'backoff_strategies ' '(Optional[List[BackoffStrategy]]): ' 'list of ' 'backoff ' 'strategies to ' 'use to ' 'determine how ' 'long\n' ' to ' 'wait before ' 'retrying\n' ' '}, 'DefaultPaginator': {'allOf': [{'$ref': '#/definitions/Paginator'}, {'properties': {'_token': {}, 'config': {'type': 'object'}, 'decoder': {'$ref': '#/definitions/Decoder', 'default': {}}, 'page_size_option': {'$ref': '#/definitions/RequestOption'}, 'page_token_option': {'$ref': '#/definitions/RequestOption'}, 'pagination_strategy': {'$ref': '#/definitions/PaginationStrategy'}, 'url_base': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['pagination_strategy', 'config', 'url_base'], 'type': 'object'}], 'description': '\n' ' Default ' 'paginator to ' 'request pages of ' 'results with a ' 'fixed size until ' 'the pagination ' 'strategy no ' 'longer returns a ' 'next_page_token\n' '\n' ' Examples:\n' ' 1.\n' ' * ' 'fetches up to 10 ' 'records at a ' 'time by setting ' 'the "limit" ' 'request param to ' '10\n' ' * ' 'updates the ' 'request path ' 'with "{{ ' 'response._metadata.next ' '}}"\n' ' ```\n' ' ' 'paginator:\n' ' ' 'type: ' '"DefaultPaginator"\n' ' ' 'page_size_option:\n' ' ' 'inject_into: ' 'request_parameter\n' ' ' 'field_name: ' 'limit\n' ' ' 'page_token_option:\n' ' ' 'option_type: ' 'path\n' ' ' 'pagination_strategy:\n' ' ' 'type: ' '"CursorPagination"\n' ' ' 'cursor_value: ' '"{{ ' 'response._metadata.next ' '}}"\n' ' ' 'page_size: 10\n' ' ```\n' '\n' ' 2.\n' ' * ' 'fetches up to 5 ' 'records at a ' 'time by setting ' 'the "page_size" ' 'header to 5\n' ' * ' 'increments a ' 'record counter ' 'and set the ' 'request ' 'parameter ' '"offset" to the ' 'value of the ' 'counter\n' ' ```\n' ' ' 'paginator:\n' ' ' 'type: ' '"DefaultPaginator"\n' ' ' 'page_size_option:\n' ' ' 'inject_into: ' 'header\n' ' ' 'field_name: ' 'page_size\n' ' ' 'pagination_strategy:\n' ' ' 'type: ' '"OffsetIncrement"\n' ' ' 'page_size: 5\n' ' ' 'page_token_option:\n' ' ' 'option_type: ' '"request_parameter"\n' ' ' 'field_name: ' '"offset"\n' ' ```\n' '\n' ' 3.\n' ' * ' 'fetches up to 5 ' 'records at a ' 'time by setting ' 'the "page_size" ' 'request param to ' '5\n' ' * ' 'increments a ' 'page counter and ' 'set the request ' 'parameter "page" ' 'to the value of ' 'the counter\n' ' ```\n' ' ' 'paginator:\n' ' ' 'type: ' '"DefaultPaginator"\n' ' ' 'page_size_option:\n' ' ' 'inject_into: ' 'request_parameter\n' ' ' 'field_name: ' 'page_size\n' ' ' 'pagination_strategy:\n' ' ' 'type: ' '"PageIncrement"\n' ' ' 'page_size: 5\n' ' ' 'page_token_option:\n' ' ' 'option_type: ' '"request_parameter"\n' ' ' 'field_name: ' '"page"\n' ' ```\n' ' Attributes:\n' ' ' 'page_size_option ' '(Optional[RequestOption]): ' 'the request ' 'option to set ' 'the page size. ' 'Cannot be ' 'injected in the ' 'path.\n' ' ' 'page_token_option ' '(RequestOption): ' 'the request ' 'option to set ' 'the page token\n' ' ' 'pagination_strategy ' '(PaginationStrategy): ' 'Strategy ' 'defining how to ' 'get the next ' 'page token\n' ' config ' '(Config): ' 'connection ' 'config\n' ' url_base ' '(Union[InterpolatedString, ' 'str]): ' "endpoint's base " 'url\n' ' decoder ' '(Decoder): ' 'decoder to ' 'decode the ' 'response\n' ' '}, 'DefaultSchemaLoader': {'allOf': [{'$ref': '#/definitions/SchemaLoader'}, {'properties': {'config': {'type': 'object'}}, 'required': ['config'], 'type': 'object'}], 'description': '\n' ' Loads a ' 'schema from ' 'the default ' 'location or ' 'returns an ' 'empty schema ' 'for streams ' 'that have not ' 'defined their ' 'schema file ' 'yet.\n' '\n' ' ' 'Attributes:\n' ' ' 'config ' '(Config): The ' 'user-provided ' 'configuration ' 'as specified ' 'by the ' "source's " 'spec\n' ' ' 'options ' '(Mapping[str, ' 'Any]): ' 'Additional ' 'arguments to ' 'pass to the ' 'string ' 'interpolation ' 'if needed\n' ' '}, 'DpathExtractor': {'allOf': [{'$ref': '#/definitions/RecordExtractor'}, {'properties': {'config': {'type': 'object'}, 'decoder': {'$ref': '#/definitions/JsonDecoder', 'default': {}}, 'field_pointer': {'items': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'type': 'array'}}, 'required': ['field_pointer', 'config'], 'type': 'object'}], 'description': '\n' ' Record ' 'extractor that ' 'searches a decoded ' 'response over a ' 'path defined as an ' 'array of fields.\n' '\n' ' If the field ' 'pointer points to ' 'an array, that ' 'array is ' 'returned.\n' ' If the field ' 'pointer points to ' 'an object, that ' 'object is returned ' 'wrapped as an ' 'array.\n' ' If the field ' 'pointer points to ' 'an empty object, ' 'an empty array is ' 'returned.\n' ' If the field ' 'pointer points to ' 'a non-existing ' 'path, an empty ' 'array is ' 'returned.\n' '\n' ' Examples of ' 'instantiating this ' 'transform:\n' ' ```\n' ' extractor:\n' ' type: ' 'DpathExtractor\n' ' ' 'field_pointer:\n' ' - ' '"root"\n' ' - ' '"data"\n' ' ```\n' '\n' ' ```\n' ' extractor:\n' ' type: ' 'DpathExtractor\n' ' ' 'field_pointer:\n' ' - ' '"root"\n' ' - "{{ ' "options['field'] " '}}"\n' ' ```\n' '\n' ' ```\n' ' extractor:\n' ' type: ' 'DpathExtractor\n' ' ' 'field_pointer: []\n' ' ```\n' '\n' ' Attributes:\n' ' transform ' '(Union[InterpolatedString, ' 'str]): Pointer to ' 'the field that ' 'should be ' 'extracted\n' ' config ' '(Config): The ' 'user-provided ' 'configuration as ' 'specified by the ' "source's spec\n" ' decoder ' '(Decoder): The ' 'decoder ' 'responsible to ' 'transfom the ' 'response in a ' 'Mapping\n' ' '}, 'ErrorHandler': {'description': '\n' ' Defines whether ' 'a request was ' 'successful and how ' 'to handle a ' 'failure.\n' ' ', 'properties': {}, 'type': 'object'}, 'HttpRequester': {'allOf': [{'$ref': '#/definitions/Requester'}, {'properties': {'authenticator': {'anyOf': [{'$ref': '#/definitions/NoAuth'}, {'$ref': '#/definitions/DeclarativeOauth2Authenticator'}, {'$ref': '#/definitions/ApiKeyAuthenticator'}, {'$ref': '#/definitions/BearerAuthenticator'}, {'$ref': '#/definitions/BasicHttpAuthenticator'}, {'$ref': '#/definitions/SessionTokenAuthenticator'}]}, 'config': {'type': 'object'}, 'error_handler': {'anyOf': [{'$ref': '#/definitions/CompositeErrorHandler'}, {'$ref': '#/definitions/DefaultErrorHandler'}]}, 'http_method': {'anyOf': [{'type': 'string'}, {'enum': ['GET', 'POST'], 'type': 'string'}], 'default': }, 'name': {'type': 'string'}, 'path': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'request_options_provider': {'$ref': '#/definitions/InterpolatedRequestOptionsProvider'}, 'url_base': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['name', 'url_base', 'path', 'config'], 'type': 'object'}], 'description': '\n' ' Default ' 'implementation of a ' 'Requester\n' '\n' ' Attributes:\n' ' name (str): ' 'Name of the stream. ' 'Only used for ' 'request/response ' 'caching\n' ' url_base ' '(Union[InterpolatedString, ' 'str]): Base url to ' 'send requests to\n' ' path ' '(Union[InterpolatedString, ' 'str]): Path to send ' 'requests to\n' ' http_method ' '(Union[str, ' 'HttpMethod]): HTTP ' 'method to use when ' 'sending requests\n' ' ' 'request_options_provider ' '(Optional[InterpolatedRequestOptionsProvider]): ' 'request option ' 'provider defining ' 'the options to set ' 'on outgoing ' 'requests\n' ' ' 'authenticator ' '(DeclarativeAuthenticator): ' 'Authenticator ' 'defining how to ' 'authenticate to the ' 'source\n' ' ' 'error_handler ' '(Optional[ErrorHandler]): ' 'Error handler ' 'defining how to ' 'detect and handle ' 'errors\n' ' config ' '(Config): The ' 'user-provided ' 'configuration as ' 'specified by the ' "source's spec\n" ' '}, 'HttpResponseFilter': {'description': '\n' ' Filter to ' 'select ' 'HttpResponses\n' '\n' ' ' 'Attributes:\n' ' action ' '(Union[ResponseAction, ' 'str]): action ' 'to execute if ' 'a request ' 'matches\n' ' ' 'http_codes ' '(Set[int]): ' 'http code of ' 'matching ' 'requests\n' ' ' 'error_message_contains ' '(str): error ' 'substring of ' 'matching ' 'requests\n' ' ' 'predicate ' '(str): ' 'predicate to ' 'apply to ' 'determine if a ' 'request is ' 'matching\n' ' ' 'error_message ' '(Union[InterpolatedString, ' 'str): error ' 'message to ' 'display if the ' 'response ' 'matches the ' 'filter\n' ' ', 'properties': {'action': {'anyOf': [{'enum': ['SUCCESS', 'FAIL', 'IGNORE', 'RETRY'], 'type': 'string'}, {'type': 'string'}]}, 'config': {'type': 'object'}, 'error_message': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': ''}, 'error_message_contains': {'type': 'string'}, 'http_codes': {'items': {'type': 'integer'}, 'type': 'array', 'uniqueItems': True}, 'predicate': {'anyOf': [{'$ref': '#/definitions/InterpolatedBoolean'}, {'type': 'string'}], 'default': ''}}, 'required': ['action', 'config'], 'type': 'object'}, 'HttpSelector': {'description': '\n' ' Responsible for ' 'translating an HTTP ' 'response into a list ' 'of records by ' 'extracting records ' 'from the response ' 'and optionally ' 'filtering\n' ' records based on ' 'a heuristic.\n' ' ', 'properties': {}, 'type': 'object'}, 'InlineSchemaLoader': {'allOf': [{'$ref': '#/definitions/SchemaLoader'}, {'properties': {'schema': {'type': 'object'}}, 'required': ['schema'], 'type': 'object'}], 'description': 'Describes a ' "stream's " 'schema'}, 'InterpolatedBoolean': {'description': 'InterpolatedBoolean(condition: ' 'str, options: ' 'dataclasses.InitVar[typing.Mapping[str, ' 'typing.Any]])', 'properties': {'condition': {'type': 'string'}}, 'required': ['condition'], 'type': 'object'}, 'InterpolatedRequestOptionsProvider': {'allOf': [{'$ref': '#/definitions/RequestOptionsProvider'}, {'properties': {'config': {'default': {}, 'type': 'object'}, 'request_body_data': {'anyOf': [{'additionalProperties': {'type': 'string'}, 'type': 'object'}, {'type': 'string'}]}, 'request_body_json': {'anyOf': [{'additionalProperties': {'type': 'string'}, 'type': 'object'}, {'type': 'string'}]}, 'request_headers': {'anyOf': [{'additionalProperties': {'type': 'string'}, 'type': 'object'}, {'type': 'string'}]}, 'request_parameters': {'anyOf': [{'additionalProperties': {'type': 'string'}, 'type': 'object'}, {'type': 'string'}]}}, 'type': 'object'}], 'description': '\n' ' ' 'Defines ' 'the ' 'request ' 'options ' 'to ' 'set ' 'on ' 'an ' 'outgoing ' 'HTTP ' 'request ' 'by ' 'evaluating ' '`InterpolatedMapping`s\n' '\n' ' ' 'Attributes:\n' ' ' 'config ' '(Config): ' 'The ' 'user-provided ' 'configuration ' 'as ' 'specified ' 'by ' 'the ' "source's " 'spec\n' ' ' 'request_parameters ' '(Union[str, ' 'Mapping[str, ' 'str]]): ' 'The ' 'request ' 'parameters ' 'to ' 'set ' 'on ' 'an ' 'outgoing ' 'HTTP ' 'request\n' ' ' 'request_headers ' '(Union[str, ' 'Mapping[str, ' 'str]]): ' 'The ' 'request ' 'headers ' 'to ' 'set ' 'on ' 'an ' 'outgoing ' 'HTTP ' 'request\n' ' ' 'request_body_data ' '(Union[str, ' 'Mapping[str, ' 'str]]): ' 'The ' 'body ' 'data ' 'to ' 'set ' 'on ' 'an ' 'outgoing ' 'HTTP ' 'request\n' ' ' 'request_body_json ' '(Union[str, ' 'Mapping[str, ' 'str]]): ' 'The ' 'json ' 'content ' 'to ' 'set ' 'on ' 'an ' 'outgoing ' 'HTTP ' 'request\n' ' '}, 'InterpolatedString': {'description': '\n' ' Wrapper ' 'around a raw ' 'string to be ' 'interpolated ' 'with the ' 'Jinja2 ' 'templating ' 'engine\n' '\n' ' ' 'Attributes:\n' ' string ' '(str): The ' 'string to ' 'evalute\n' ' ' 'default ' '(Optional[str]): ' 'The default ' 'value to ' 'return if the ' 'evaluation ' 'returns an ' 'empty string\n' ' ' 'options ' '(Mapping[str, ' 'Any]): ' 'Additional ' 'runtime ' 'parameters to ' 'be used for ' 'string ' 'interpolation\n' ' ', 'properties': {'default': {'type': 'string'}, 'string': {'type': 'string'}}, 'required': ['string'], 'type': 'object'}, 'JsonDecoder': {'allOf': [{'$ref': '#/definitions/Decoder'}, {'properties': {}, 'type': 'object'}], 'description': '\n' ' Decoder strategy ' 'that returns the ' 'json-encoded content ' 'of a response, if ' 'any.\n' ' '}, 'JsonFileSchemaLoader': {'allOf': [{'$ref': '#/definitions/SchemaLoader'}, {'properties': {'config': {'type': 'object'}, 'file_path': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['config'], 'type': 'object'}], 'description': '\n' ' Loads ' 'the schema ' 'from a json ' 'file\n' '\n' ' ' 'Attributes:\n' ' ' 'file_path ' '(Union[InterpolatedString, ' 'str]): The ' 'path to the ' 'json file ' 'describing ' 'the schema\n' ' name ' '(str): The ' "stream's " 'name\n' ' ' 'config ' '(Config): ' 'The ' 'user-provided ' 'configuration ' 'as specified ' 'by the ' "source's " 'spec\n' ' ' 'options ' '(Mapping[str, ' 'Any]): ' 'Additional ' 'arguments to ' 'pass to the ' 'string ' 'interpolation ' 'if needed\n' ' '}, 'ListStreamSlicer': {'allOf': [{'$ref': '#/definitions/StreamSlicer'}, {'properties': {'config': {'type': 'object'}, 'cursor_field': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'request_option': {'$ref': '#/definitions/RequestOption'}, 'slice_values': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'string'}]}}, 'required': ['slice_values', 'cursor_field', 'config'], 'type': 'object'}], 'description': '\n' ' Stream ' 'slicer that ' 'iterates over ' 'the values of a ' 'list\n' ' If ' 'slice_values is ' 'a string, then ' 'evaluate it as ' 'literal and ' 'assert the ' 'resulting ' 'literal is a ' 'list\n' '\n' ' Attributes:\n' ' ' 'slice_values ' '(Union[str, ' 'List[str]]): The ' 'values to ' 'iterate over\n' ' ' 'cursor_field ' '(Union[InterpolatedString, ' 'str]): The name ' 'of the cursor ' 'field\n' ' config ' '(Config): The ' 'user-provided ' 'configuration as ' 'specified by the ' "source's spec\n" ' ' 'request_option ' '(Optional[RequestOption]): ' 'The request ' 'option to ' 'configure the ' 'HTTP request\n' ' '}, 'MinMaxDatetime': {'description': '\n' ' Compares the ' 'provided date ' 'against optional ' 'minimum or maximum ' 'times. If date is ' 'earlier than\n' ' min_date, then ' 'min_date is ' 'returned. If date ' 'is greater than ' 'max_date, then ' 'max_date is ' 'returned.\n' ' If neither, ' 'the input date is ' 'returned.\n' '\n' ' The timestamp ' 'format accepts the ' 'same format codes ' 'as ' 'datetime.strfptime, ' 'which are\n' ' all the format ' 'codes required by ' 'the 1989 C ' 'standard.\n' ' Full list of ' 'accepted format ' 'codes: ' 'https://man7.org/linux/man-pages/man3/strftime.3.html\n' '\n' ' Attributes:\n' ' datetime ' '(Union[InterpolatedString, ' 'str]): ' 'InterpolatedString ' 'or string ' 'representing the ' 'datetime in the ' 'format specified ' 'by ' '`datetime_format`\n' ' ' 'datetime_format ' '(str): Format of ' 'the datetime ' 'passed as ' 'argument\n' ' ' 'min_datetime ' '(Union[InterpolatedString, ' 'str]): Represents ' 'the minimum ' 'allowed datetime ' 'value.\n' ' ' 'max_datetime ' '(Union[InterpolatedString, ' 'str]): Represents ' 'the maximum ' 'allowed datetime ' 'value.\n' ' ', 'properties': {'_datetime_format': {'default': '', 'type': 'string'}, 'datetime': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'datetime_format': {'default': , 'type': 'string'}, 'max_datetime': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': ''}, 'min_datetime': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': ''}}, 'required': ['datetime'], 'type': 'object'}, 'NoAuth': {'allOf': [{'$ref': '#/definitions/DeclarativeAuthenticator'}, {'properties': {}, 'type': 'object'}], 'description': 'NoAuth(options: ' 'dataclasses.InitVar[typing.Mapping[str, ' 'typing.Any]])'}, 'NoPagination': {'allOf': [{'$ref': '#/definitions/Paginator'}, {'properties': {}, 'type': 'object'}], 'description': '\n' ' Pagination ' 'implementation that ' 'never returns a next ' 'page.\n' ' '}, 'PaginationStrategy': {'description': '\n' ' Defines ' 'how to get the ' 'next page ' 'token\n' ' ', 'properties': {}, 'type': 'object'}, 'Paginator': {'allOf': [{'$ref': '#/definitions/RequestOptionsProvider'}, {'properties': {}, 'type': 'object'}], 'description': '\n' ' Defines the token ' 'to use to fetch the ' 'next page of records ' 'from the API.\n' '\n' ' If needed, the ' 'Paginator will set ' 'request options to be ' 'set on the HTTP request ' 'to fetch the next page ' 'of records.\n' ' If the ' 'next_page_token is the ' 'path to the next page ' 'of records, then it ' 'should be accessed ' 'through the `path` ' 'method\n' ' '}, 'PaginatorTestReadDecorator': {'allOf': [{'$ref': '#/definitions/Paginator'}, {'properties': {}, 'type': 'object'}], 'description': '\n' ' In ' 'some ' 'cases, ' 'we ' 'want ' 'to ' 'limit ' 'the ' 'number ' 'of ' 'requests ' 'that ' 'are ' 'made ' 'to the ' 'backend ' 'source. ' 'This ' 'class ' 'allows ' 'for ' 'limiting ' 'the ' 'number ' 'of\n' ' ' 'pages ' 'that ' 'are ' 'queried ' 'throughout ' 'a read ' 'command.\n' ' '}, 'ParentStreamConfig': {'description': '\n' ' Describes ' 'how to create ' 'a stream slice ' 'from a parent ' 'stream\n' '\n' ' stream: ' 'The stream to ' 'read records ' 'from\n' ' ' 'parent_key: ' 'The key of the ' 'parent ' "stream's " 'records that ' 'will be the ' 'stream slice ' 'key\n' ' ' 'stream_slice_field: ' 'The stream ' 'slice key\n' ' ' 'request_option: ' 'How to inject ' 'the slice ' 'value on an ' 'outgoing HTTP ' 'request\n' ' ', 'properties': {'parent_key': {'type': 'string'}, 'request_option': {'$ref': '#/definitions/RequestOption'}, 'stream': {}, 'stream_slice_field': {'type': 'string'}}, 'required': ['stream', 'parent_key', 'stream_slice_field'], 'type': 'object'}, 'ParsedAddFieldDefinition': {'description': 'Defines ' 'the ' 'field to ' 'add on a ' 'record', 'properties': {'path': {'items': {'type': 'string'}, 'type': 'array'}, 'value': {'$ref': '#/definitions/InterpolatedString'}}, 'required': ['path', 'value'], 'type': 'object'}, 'RecordExtractor': {'description': '\n' ' Responsible ' 'for translating ' 'an HTTP response ' 'into a list of ' 'records by ' 'extracting ' 'records from the ' 'response.\n' ' ', 'properties': {}, 'type': 'object'}, 'RecordFilter': {'description': '\n' ' Filter applied ' 'on a list of ' 'Records\n' '\n' ' config (Config): ' 'The user-provided ' 'configuration as ' 'specified by the ' "source's spec\n" ' condition (str): ' 'The string ' 'representing the ' 'predicate to filter ' 'a record. Records ' 'will be removed if ' 'evaluated to False\n' ' ', 'properties': {'condition': {'default': '', 'type': 'string'}, 'config': {'type': 'object'}}, 'required': ['config'], 'type': 'object'}, 'RecordSelector': {'allOf': [{'$ref': '#/definitions/HttpSelector'}, {'properties': {'extractor': {'$ref': '#/definitions/DpathExtractor'}, 'record_filter': {'$ref': '#/definitions/RecordFilter'}}, 'required': ['extractor'], 'type': 'object'}], 'description': '\n' ' Responsible ' 'for translating an ' 'HTTP response into ' 'a list of records ' 'by extracting ' 'records from the ' 'response and ' 'optionally ' 'filtering\n' ' records based ' 'on a heuristic.\n' '\n' ' Attributes:\n' ' extractor ' '(RecordExtractor): ' 'The record ' 'extractor ' 'responsible for ' 'extracting records ' 'from a response\n' ' ' 'record_filter ' '(RecordFilter): ' 'The record filter ' 'responsible for ' 'filtering ' 'extracted records\n' ' '}, 'RecordTransformation': {'description': '\n' ' ' 'Implementations ' 'of this ' 'class define ' 'transformations ' 'that can be ' 'applied to ' 'records of a ' 'stream.\n' ' ', 'properties': {}, 'type': 'object'}, 'RemoveFields': {'allOf': [{'$ref': '#/definitions/RecordTransformation'}, {'properties': {'field_pointers': {'items': {'items': {'type': 'string'}, 'type': 'array'}, 'type': 'array'}}, 'required': ['field_pointers'], 'type': 'object'}], 'description': '\n' ' A transformation ' 'which removes fields ' 'from a record. The ' 'fields removed are ' 'designated using ' 'FieldPointers.\n' ' During ' 'transformation, if a ' 'field or any of its ' 'parents does not ' 'exist in the record, ' 'no error is thrown.\n' '\n' ' If an input ' 'field pointer ' 'references an item ' 'in a list (e.g: ' '["k", 0] in the ' 'object {"k": ["a", ' '"b", "c"]}) then\n' ' the object at ' 'that index is set to ' 'None rather than ' 'being not entirely ' 'removed from the ' 'list. TODO change ' 'this behavior.\n' '\n' " It's possible to " 'remove objects ' 'nested in lists e.g: ' 'removing [".", 0, ' '"k"] from {".": ' '[{"k": "V"}]} ' 'results in {".": ' '[{}]}\n' '\n' ' Usage syntax:\n' '\n' ' ```yaml\n' ' my_stream:\n' ' \n' ' ' 'transformations:\n' ' - ' 'type: RemoveFields\n' ' ' 'field_pointers:\n' ' ' '- ["path", "to", ' '"field1"]\n' ' ' '- ["path2"]\n' ' ```\n' '\n' ' Attributes:\n' ' ' 'field_pointers ' '(List[FieldPointer]): ' 'pointers to the ' 'fields that should ' 'be removed\n' ' '}, 'RequestOption': {'description': '\n' ' Describes an ' 'option to set on a ' 'request\n' '\n' ' Attributes:\n' ' inject_into ' '(RequestOptionType): ' 'Describes where in ' 'the HTTP request to ' 'inject the ' 'parameter\n' ' field_name ' '(Optional[str]): ' 'Describes the name ' 'of the parameter to ' 'inject. None if ' 'option_type == ' 'path. Required ' 'otherwise.\n' ' ', 'properties': {'field_name': {'type': 'string'}, 'inject_into': {'enum': ['request_parameter', 'header', 'path', 'body_data', 'body_json'], 'type': 'string'}}, 'required': ['inject_into'], 'type': 'object'}, 'RequestOptionsProvider': {'description': '\n' ' ' 'Defines ' 'the ' 'request ' 'options to ' 'set on an ' 'outgoing ' 'HTTP ' 'request\n' '\n' ' ' 'Options ' 'can be ' 'passed by\n' ' - ' 'request ' 'parameter\n' ' - ' 'request ' 'headers\n' ' - body ' 'data\n' ' - json ' 'content\n' ' ', 'properties': {}, 'type': 'object'}, 'Requester': {'allOf': [{'$ref': '#/definitions/RequestOptionsProvider'}, {'properties': {}, 'type': 'object'}]}, 'Retriever': {'description': '\n' ' Responsible for ' "fetching a stream's " 'records from an HTTP ' 'API source.\n' ' ', 'properties': {}, 'type': 'object'}, 'SchemaLoader': {'description': "Describes a stream's " 'schema', 'properties': {}, 'type': 'object'}, 'SessionTokenAuthenticator': {'allOf': [{'$ref': '#/definitions/DeclarativeAuthenticator'}, {'properties': {'api_url': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'config': {'type': 'object'}, 'header': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'login_url': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'password': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': ''}, 'session_token': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'session_token_response_key': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'username': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}, 'validate_session_url': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}]}}, 'required': ['api_url', 'header', 'session_token', 'session_token_response_key', 'username', 'config', 'login_url', 'validate_session_url'], 'type': 'object'}], 'description': '\n' ' ' 'Builds ' 'auth ' 'based ' 'on ' 'session ' 'tokens.\n' ' A ' 'session ' 'token ' 'is a ' 'random ' 'value ' 'generated ' 'by a ' 'server ' 'to ' 'identify\n' ' a ' 'specific ' 'user ' 'for the ' 'duration ' 'of one ' 'interaction ' 'session.\n' '\n' ' The ' 'header ' 'is of ' 'the ' 'form\n' ' ' '`"Specific ' 'Header": ' '"Session ' 'Token ' 'Value"`\n' '\n' ' ' 'Attributes:\n' ' ' 'api_url ' '(Union[InterpolatedString, ' 'str]): ' 'Base ' 'api url ' 'of ' 'source\n' ' ' 'username ' '(Union[InterpolatedString, ' 'str]): ' 'The ' 'username\n' ' ' 'config ' '(Config): ' 'The ' 'user-provided ' 'configuration ' 'as ' 'specified ' 'by the ' "source's " 'spec\n' ' ' 'password ' '(Union[InterpolatedString, ' 'str]): ' 'The ' 'password\n' ' ' 'header ' '(Union[InterpolatedString, ' 'str]): ' 'Specific ' 'header ' 'of ' 'source ' 'for ' 'providing ' 'session ' 'token\n' ' ' 'options ' '(Mapping[str, ' 'Any]): ' 'Additional ' 'runtime ' 'parameters ' 'to be ' 'used ' 'for ' 'string ' 'interpolation\n' ' ' 'session_token ' '(Union[InterpolatedString, ' 'str]): ' 'Session ' 'token ' 'generated ' 'by ' 'user\n' ' ' 'session_token_response_key ' '(Union[InterpolatedString, ' 'str]): ' 'Key for ' 'retrieving ' 'session ' 'token ' 'from ' 'api ' 'response\n' ' ' 'login_url ' '(Union[InterpolatedString, ' 'str]): ' 'Url fot ' 'getting ' 'a ' 'specific ' 'session ' 'token\n' ' ' 'validate_session_url ' '(Union[InterpolatedString, ' 'str]): ' 'Url to ' 'validate ' 'passed ' 'session ' 'token\n' ' '}, 'SimpleRetriever': {'allOf': [{'$ref': '#/definitions/Retriever'}, {'properties': {'_name': {'anyOf': [{'$ref': '#/definitions/InterpolatedString'}, {'type': 'string'}], 'default': ''}, '_primary_key': {'default': '', 'type': 'string'}, 'config': {'type': 'object'}, 'name': {'default': , 'type': 'string'}, 'paginator': {'anyOf': [{'$ref': '#/definitions/DefaultPaginator'}, {'$ref': '#/definitions/PaginatorTestReadDecorator'}, {'$ref': '#/definitions/NoPagination'}]}, 'primary_key': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'items': {'items': {'type': 'string'}, 'type': 'array'}, 'type': 'array'}, {'type': 'string'}], 'default': }, 'record_selector': {'$ref': '#/definitions/RecordSelector'}, 'requester': {'$ref': '#/definitions/HttpRequester'}, 'stream_slicer': {'anyOf': [{'$ref': '#/definitions/CartesianProductStreamSlicer'}, {'$ref': '#/definitions/DatetimeStreamSlicer'}, {'$ref': '#/definitions/ListStreamSlicer'}, {'$ref': '#/definitions/SingleSlice'}, {'$ref': '#/definitions/SubstreamSlicer'}], 'default': {}}}, 'required': ['requester', 'record_selector', 'config'], 'type': 'object'}], 'description': '\n' ' Retrieves ' 'records by ' 'synchronously ' 'sending requests ' 'to fetch ' 'records.\n' '\n' ' The retriever ' 'acts as an ' 'orchestrator ' 'between the ' 'requester, the ' 'record selector, ' 'the paginator, ' 'and the stream ' 'slicer.\n' '\n' ' For each ' 'stream slice, ' 'submit requests ' 'until there are ' 'no more pages of ' 'records to ' 'fetch.\n' '\n' ' This ' 'retriever ' 'currently ' 'inherits from ' 'HttpStream to ' 'reuse the request ' 'submission and ' 'pagination ' 'machinery.\n' ' As a result, ' 'some of the ' 'parameters passed ' 'to some methods ' 'are unused.\n' ' The two will ' 'be decoupled in a ' 'future release.\n' '\n' ' Attributes:\n' ' ' 'stream_name ' '(str): The ' "stream's name\n" ' ' 'stream_primary_key ' '(Optional[Union[str, ' 'List[str], ' 'List[List[str]]]]): ' "The stream's " 'primary key\n' ' requester ' '(Requester): The ' 'HTTP requester\n' ' ' 'record_selector ' '(HttpSelector): ' 'The record ' 'selector\n' ' paginator ' '(Optional[Paginator]): ' 'The paginator\n' ' ' 'stream_slicer ' '(Optional[StreamSlicer]): ' 'The stream ' 'slicer\n' ' options ' '(Mapping[str, ' 'Any]): Additional ' 'runtime ' 'parameters to be ' 'used for string ' 'interpolation\n' ' '}, 'SingleSlice': {'allOf': [{'$ref': '#/definitions/StreamSlicer'}, {'properties': {}, 'type': 'object'}], 'description': 'Stream slicer ' 'returning only a ' 'single stream slice'}, 'StreamSlicer': {'allOf': [{'$ref': '#/definitions/RequestOptionsProvider'}, {'properties': {}, 'type': 'object'}], 'description': '\n' ' Slices the ' 'stream into a subset ' 'of records.\n' ' Slices enable ' 'state checkpointing ' 'and data retrieval ' 'parallelization.\n' '\n' ' The stream ' 'slicer keeps track ' 'of the cursor state ' 'as a dict of ' 'cursor_field -> ' 'cursor_value\n' '\n' ' See the stream ' 'slicing section of ' 'the docs for more ' 'information.\n' ' '}, 'SubstreamSlicer': {'allOf': [{'$ref': '#/definitions/StreamSlicer'}, {'properties': {'parent_stream_configs': {'items': {'$ref': '#/definitions/ParentStreamConfig'}, 'type': 'array'}}, 'required': ['parent_stream_configs'], 'type': 'object'}], 'description': '\n' ' Stream slicer ' 'that iterates ' "over the parent's " 'stream slices and ' 'records and emits ' 'slices by ' 'interpolating the ' 'slice_definition ' 'mapping\n' ' Will populate ' 'the state with ' '`parent_stream_slice` ' 'and ' '`parent_record` ' 'so they can be ' 'accessed by other ' 'components\n' '\n' ' Attributes:\n' ' ' 'parent_stream_configs ' '(List[ParentStreamConfig]): ' 'parent streams to ' 'iterate over and ' 'their config\n' ' '}}, 'description': 'ConcreteDeclarativeSource(version: str, check: ' 'airbyte_cdk.sources.declarative.checks.check_stream.CheckStream, ' 'streams: ' 'List[airbyte_cdk.sources.declarative.declarative_stream.DeclarativeStream])', 'properties': {'check': {'$ref': '#/definitions/CheckStream'}, 'streams': {'items': {'$ref': '#/definitions/DeclarativeStream'}, 'type': 'array'}, 'version': {'type': 'string'}}, 'required': ['version', 'check', 'streams'], 'type': 'object'} On instance: {'check': {'class_name': 'airbyte_cdk.sources.declarative.checks.check_stream.CheckStream', 'stream_names': ['hashiras']}, 'version': '0.1.0'} The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/home/connector_builder/impl/default_api.py", line 297, in _create_low_code_adapter return self.adapter_factory.create(manifest) File "/home/connector_builder/impl/low_code_cdk_adapter.py", line 75, in create return LowCodeSourceAdapter(manifest, self._max_pages_per_slice, self._max_slices) File "/home/connector_builder/impl/low_code_cdk_adapter.py", line 19, in __init__ self._source = ManifestDeclarativeSource( File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/manifest_declarative_source.py", line 87, in __init__ self._validate_source() File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/manifest_declarative_source.py", line 194, in _validate_source raise ValidationError("Validation against auto-generated schema failed") from e jsonschema.exceptions.ValidationError: Validation against auto-generated schema failed (default_api.py:300) PASSED [ 31%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_invalid_group_format -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ ERROR] Could not perform read with with error: Every message grouping should have at least one request and response - Traceback (most recent call last): File "/home/connector_builder/impl/default_api.py", line 138, in read_stream for message_group in self._get_message_groups( File "/home/connector_builder/impl/default_api.py", line 240, in _get_message_groups self._close_page(current_page_request, current_page_response, current_slice_pages, current_page_records) File "/home/connector_builder/impl/default_api.py", line 254, in _close_page raise ValueError("Every message grouping should have at least one request and response") ValueError: Every message grouping should have at least one request and response (default_api.py:149) PASSED [ 34%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_returns_error_if_stream_does_not_exist -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ INFO] Starting syncing ManifestDeclarativeSource (abstract_source.py:99) 2023-02-14 09:11:48 [ ERROR] Could not perform read with with error: Every message grouping should have at least one request and response - Traceback (most recent call last): File "/home/connector_builder/impl/default_api.py", line 138, in read_stream for message_group in self._get_message_groups( File "/home/connector_builder/impl/default_api.py", line 240, in _get_message_groups self._close_page(current_page_request, current_page_response, current_slice_pages, current_page_records) File "/home/connector_builder/impl/default_api.py", line 254, in _close_page raise ValueError("Every message grouping should have at least one request and response") ValueError: Every message grouping should have at least one request and response (default_api.py:149) PASSED [ 36%] unit_tests/connector_builder/impl/test_default_api.py::test_create_request_from_log_message[test_create_request_with_all_fields] PASSED [ 39%] unit_tests/connector_builder/impl/test_default_api.py::test_create_request_from_log_message[test_create_request_with_no_body] PASSED [ 41%] unit_tests/connector_builder/impl/test_default_api.py::test_create_request_from_log_message[test_create_request_with_no_headers] PASSED [ 43%] unit_tests/connector_builder/impl/test_default_api.py::test_create_request_from_log_message[test_create_request_with_no_parameters] PASSED [ 46%] unit_tests/connector_builder/impl/test_default_api.py::test_create_request_from_log_message[test_create_request_with_null_body] PASSED [ 48%] unit_tests/connector_builder/impl/test_default_api.py::test_create_request_from_log_message[test_invalid_json_still_does_not_crash] -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ WARNING] Failed to parse log message into request object with error: Expecting property name enclosed in double quotes: line 1 column 2 (char 1) (default_api.py:279) PASSED [ 51%] unit_tests/connector_builder/impl/test_default_api.py::test_create_request_from_log_message[test_no_request:_prefix_does_not_crash] -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ WARNING] Failed to parse log message into request object with error: Expecting value: line 1 column 1 (char 0) (default_api.py:279) PASSED [ 53%] unit_tests/connector_builder/impl/test_default_api.py::test_create_response_from_log_message[test_create_response_with_all_fields] PASSED [ 56%] unit_tests/connector_builder/impl/test_default_api.py::test_create_response_from_log_message[test_create_response_with_no_body] PASSED [ 58%] unit_tests/connector_builder/impl/test_default_api.py::test_create_response_from_log_message[test_create_response_with_no_headers] PASSED [ 60%] unit_tests/connector_builder/impl/test_default_api.py::test_create_response_from_log_message[test_invalid_json_still_does_not_crash] -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ WARNING] Failed to parse log message into response object with error: Expecting value: line 1 column 1 (char 0) (default_api.py:292) PASSED [ 63%] unit_tests/connector_builder/impl/test_default_api.py::test_create_response_from_log_message[test_no_response:_prefix_does_not_crash] -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ WARNING] Failed to parse log message into response object with error: Expecting value: line 1 column 1 (char 0) (default_api.py:292) PASSED [ 65%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_with_many_slices PASSED [ 68%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_given_maximum_number_of_slices_then_test_read_limit_reached PASSED [ 70%] unit_tests/connector_builder/impl/test_default_api.py::test_read_stream_given_maximum_number_of_pages_then_test_read_limit_reached PASSED [ 73%] unit_tests/connector_builder/impl/test_default_api.py::test_resolve_manifest PASSED [ 75%] unit_tests/connector_builder/impl/test_default_api.py::test_resolve_manifest_unresolvable_references -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ ERROR] Could not resolve manifest with error: Undefined reference *ref(definitions.retriever) from definitions.retriever - Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 168, in _read_reference_value return manifest_node[ref] KeyError: 'retriever' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 139, in _lookup_reference_value return self._read_reference_value(path, manifest) File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 171, in _read_reference_value manifest_node = manifest_node[head] KeyError: 'retriever' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/connector_builder/impl/default_api.py", line 181, in resolve_manifest manifest=ManifestDeclarativeSource( File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/manifest_declarative_source.py", line 74, in __init__ resolved_source_config = ManifestReferenceResolver().preprocess_manifest(manifest) File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 104, in preprocess_manifest return self._evaluate_node(manifest, manifest, set()) File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 108, in _evaluate_node evaluated_dict = {k: self._evaluate_node(v, manifest, visited) for k, v in node.items() if not self._is_ref_key(k)} File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 108, in evaluated_dict = {k: self._evaluate_node(v, manifest, visited) for k, v in node.items() if not self._is_ref_key(k)} File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 120, in _evaluate_node return [self._evaluate_node(v, manifest, visited) for v in node] File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 120, in return [self._evaluate_node(v, manifest, visited) for v in node] File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 108, in _evaluate_node evaluated_dict = {k: self._evaluate_node(v, manifest, visited) for k, v in node.items() if not self._is_ref_key(k)} File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 108, in evaluated_dict = {k: self._evaluate_node(v, manifest, visited) for k, v in node.items() if not self._is_ref_key(k)} File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 125, in _evaluate_node ret = self._evaluate_node(self._lookup_reference_value(node, manifest), manifest, visited) File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py", line 141, in _lookup_reference_value raise UndefinedReferenceException(path, reference) airbyte_cdk.sources.declarative.parsers.custom_exceptions.UndefinedReferenceException: Undefined reference *ref(definitions.retriever) from definitions.retriever (default_api.py:186) PASSED [ 78%] unit_tests/connector_builder/impl/test_default_api.py::test_resolve_manifest_invalid -------------------------------- live log call --------------------------------- 2023-02-14 09:11:48 [ ERROR] Could not resolve manifest with error: check - Traceback (most recent call last): File "/home/connector_builder/impl/default_api.py", line 181, in resolve_manifest manifest=ManifestDeclarativeSource( File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/manifest_declarative_source.py", line 87, in __init__ self._validate_source() File "/usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/declarative/manifest_declarative_source.py", line 182, in _validate_source full_config["check"] = self._legacy_source_config["check"] KeyError: 'check' (default_api.py:186) PASSED [ 80%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_get_http_streams PASSED [ 82%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_get_http_manifest_with_references PASSED [ 85%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_get_http_streams_non_declarative_streams PASSED [ 87%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_get_http_streams_non_http_stream PASSED [ 90%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_read_streams PASSED [ 92%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_read_streams_with_error PASSED [ 95%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_read_streams_invalid_reference PASSED [ 97%] unit_tests/connector_builder/impl/test_low_code_cdk_adapter.py::test_stream_use_read_test_retriever_and_paginator PASSED [100%] =============================== warnings summary =============================== connector_builder/impl/test_default_api.py: 6 warnings connector_builder/impl/test_low_code_cdk_adapter.py: 5 warnings /usr/local/lib/python3.9/site-packages/airbyte_cdk/sources/streams/http/http.py:43: DeprecationWarning: Call to deprecated class NoAuth. (Set `authenticator=None` instead) -- Deprecated since version 0.1.20. self._authenticator: HttpAuthenticator = NoAuth() connector_builder/impl/test_default_api.py: 6 warnings connector_builder/impl/test_low_code_cdk_adapter.py: 5 warnings /usr/local/lib/python3.9/site-packages/deprecated/classic.py:173: DeprecationWarning: Call to deprecated class HttpAuthenticator. (Use requests.auth.AuthBase instead) -- Deprecated since version 0.1.20. return old_new1(cls, *args, **kwargs) -- Docs: https://docs.pytest.org/en/stable/warnings.html ======================= 41 passed, 22 warnings in 4.76s ======================== ============================= test session starts ============================== platform linux -- Python 3.9.16, pytest-6.2.5, py-1.11.0, pluggy-1.0.0 rootdir: /home/integration_tests, configfile: ../pytest.ini plugins: requests-mock-1.10.0, anyio-3.6.2, mock-3.10.0, cov-4.0.0, recording-0.12.1 collected 1 item integration_tests/test_integration_test.py::test_test PASSED [100%] ============================== 1 passed in 0.08s =============================== FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':airbyte-proxy:bashTest'. > A problem occurred starting process 'command './test.sh'' * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':airbyte-commons:test'. > There were failing tests. See the report at: file:///G:/Programming/Forks/airbyte/airbyte-commons/build/reports/tests/test/index.html * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. ============================================================================== * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/7.6/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 54s 103 actionable tasks: 17 executed, 86 up-to-date S3 cache 75s wasted on misses, reads: 143, elapsed: 59s